質問

IPCを使用して次のエラーを受け取りました。
" IPCポートへの接続に失敗しました:指定されたファイルが見つかりません。" この問題はWindows 2003サーバーで発生しています。

もちろん、本番環境でのみ発生します。開発環境でこれを再現することはできません。

IPCを使用しようとしているWindowsサービスは、ローカルシステムとして実行されています。

変更が必要な何らかの許可がありますか?

役に立ちましたか?

解決

スピンアップする前にチャンネルにアクセスしようとしました。そのため、「見つかりません」というエラーが表示されます。アクセスコードをいくつかの「本当に準備ができている」コードにラップすることで問題が修正されました。

他のヒント

私にとって、DTAは正常に機能していました。しかし、突然この同じエラーが表示されるようになりました。

私にとって修正はこれでした:

-> Go To Task Manager
-> Go To Processes Tab
-> Find and kill the DTA process. For me this process is named as 'DTASHELL.exe'

今、DTAを起動してみてください。これで動作するはずです:-)

実稼働コードでこの問題が発生しました。ユーザーのシステムのごく一部で失敗していました。

エラーは、使用しているMicrosoftコードにあることが判明しました。ユーザー名を使用してIPCチャネルを生成します。

ipc:// APP_USER_000:SingeInstanceIPCChannel / SingleInstanceApplicationService

ユーザー名に特定の文字が含まれていると、無効なチャンネルURLが生成されるため、受信アプリはそもそもチャンネルを作成できません。

修正は、ユーザー名の最初の文字ではなく、ユーザー名のハッシュを使用することです。

(ここでコードを使用していました: http://blogs.microsoft.co.il/blogs/arik/archive/2010/05/28/wpf-single-instance-application.aspx

サーバーチャネルの初期化とオブジェクトの公開に使用するコードと、リモートオブジェクトにアクセスするときに使用するURIを含むクライアントコードを投稿してください。

よくある落とし穴は、辞書でチャンネルを初期化し、

を使用してチャンネルの名前を設定するときです
dic["name"] = "channelName";  
//used for retrieving the channel - ChannelServices.GetChannel("channelName");

の代わりに
dic["portName"] = "channelName";
//used as the identifier for the named pipe - 
//The client should get the object from the uri : ipc://channelName/objectName
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top