2009-03-13 16 views
2

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

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

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

変更が必要な権限がありますか?

+0

はあなたが知っている別のユーザーが問題のリソース(複数可)へのアクセス権を持っているとして、生産システム上でサービスを実行しようとしたことがありますか? –

+0

はい、サービスのユーザーを管理者権限のユーザーに変更し、すべてが機能しました。だから私はそれが許可のものだと仮定しています。 – Danno

+0

ローカルシステムではなく、そのアカウントでサービスを実行するだけで、必要な権限を持つユーザーアカウントを作成するだけで問題はありますか? –

答えて

1

を使用して、チャネルの名前を設定しますスピンアップした。したがって、「見つかりませんでした」というエラーが表示されます。アクセスコードをいくつかの 'それは本当に準備ができている'コードでラップして問題を解決しました。

+0

Danno:私はここで同様の問題を抱えています: http:// stackoverflow。com/questions/1474787 /別のプロセスがあると判断したリモート処理のためのチャネル 「本当に準備ができましたか」というラッパーの外観はどうでしたか? – snicker

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 
1

私にとって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を起動してみてください。今すぐ動作するはずです:-)

1

生産コードでこの問題が発生しました。ユーザーのシステムのわずかなパーセンテージで失敗していました。

エラーは、私たちが使用していたマイクロソフトのコードにあることが判明しました。ユーザ名を使用してIPCチャネルを生成します。

IPC:// APP_USER_000:SingeInstanceIPCChannel/SingleInstanceApplicationService

名で特定の文字を受信アプリが最初の場所でのチャネルの作成に失敗したので、これは、無効なチャンネルURLを生成します。

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

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