「ステータス ツール」を伴う Windows サービスを作成しています。このサービスは、プロセス間通信用の WCF 名前付きパイプ エンドポイントをホストします。名前付きパイプを介して、ステータス ツールは定期的にサービスに最新の「ステータス」を問い合わせることができます。
私の開発マシンには複数の IP アドレスがあります。そのうちの 1 つは、192.168.1.XX アドレスを持つ「ローカル」ネットワークです。もう 1 つは「企業」ネットワークで、アドレスは 10.0.X.XX です。Windows サービスは、単一の IP アドレスで UDP マルチキャスト トラフィックを収集します。
Windows サービスは、「192.168.1.XX」アドレスを使用している限り、これまで正常に機能していました。クライアントに常に正しくステータスを報告します。
他の「企業」IPアドレス(10.0.X.XX)に切り替えてサービスを再起動するとすぐに、ステータスを取得するときに「CommunicationExceptions」が連続して発生します。
"There was an error reading from the pipe: The pipe has been ended. (109, 0x6d)."
ここで、UDP クライアントの「要求された」IP アドレスが Named-Pipe インターフェースの機能と関係があるとは思いません。それらはアプリケーションの完全に別の部分です。
関連する WCF 構成セクションは次のとおりです。
//On the Client app:
string myNamedPipe = "net.pipe://127.0.0.1/MyNamedPipe";
ChannelFactory<IMyService> proxyFactory =
new ChannelFactory<IMyService>(
new NetNamedPipeBinding(),
new EndpointAddress(myNamedPipe));
//On the Windows Service:
string myNamedPipe = "net.pipe://127.0.0.1/MyNamedPipe";
myService = new MyService(myCustomArgs);
serviceContractHost = new ServiceHost(myService );
serviceContractHost.AddServiceEndpoint(
typeof(IMyService),
new NetNamedPipeBinding(),
myNamedPipe);
serviceContractHost.Open();
これは「権限」の問題ではないと思います - 私は管理者権限でクライアントを実行しています - しかし、おそらくこれが壊れたドメイン固有の理由がありますか?