2

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

もちろん、それは本番環境でのみ発生します。弊社の開発環境では再現できません。

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

変更する必要があるある種の権限はありますか?

4

4 に答える 4

1

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

エラーは、使用していた 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 )

于 2013-01-09T15:05:11.430 に答える
1

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

于 2009-04-07T12:54:38.667 に答える
0

サーバー チャネルを初期化してオブジェクトを公開するために使用するコードと、リモート オブジェクトにアクセスしようとするときに使用する 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
于 2009-03-30T09:36:19.557 に答える