WCF NetNamedPipeBindingに問題があります。 Windows XPマシンでVisual Studio 2008を使用してサーバーとクライアントのコードを実行すると、すべて正常に動作します。しかし、サーバーをWindowsサービスとして展開し、Windows Server 2008にクライアントアプリケーションをインストールするとすぐに、契約方法のいずれかを使用しようとすると、クライアント側でTimeoutExceptionが発生します。それは私が正常にクライアントを作成し、それを開くことができるようだが、メソッドのいずれかを呼び出すことはできません。WCF NetNamedPipeBinding TimeoutException(Windows Server 2008)
サービスの初期化コード:
Uri baseAddress = new Uri("http://localhost:8500/xNet/xNetService");
string address = "net.pipe://localhost/xNet/xNetService";
_xNetAPIServiceHost = new ServiceHost(typeof(xNetService), baseAddress);
NetNamedPipeBinding binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
_xNetAPIServiceHost.AddServiceEndpoint(typeof(IServiceAPI), binding, address);
// Add a mex endpoint
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = new Uri("http://localhost:8501/xNet/xNetService/mex");
_xNetAPIServiceHost.Description.Behaviors.Add(smb);
_xNetAPIServiceHost.Open();
クライアントの初期化コード:
string address = "net.pipe://localhost/xNet/xNetService";
NetNamedPipeBinding binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
_serviceClient = new ServiceAPIClient(binding, new EndpointAddress(address));
_serviceClient.Open();
Windowsサービスは "ローカルシステムアカウント" として実行されます。私は問題が何であるかについて迷っています。私はそれがセキュリティアカウントの問題か、名前付きパイプが開いているのかどうかわかりません。私は正常に作成し、それが少なくとも名前付きパイプを見つけたように見えるクライアント側を開くことができますので、私は仮定します。私は、TimeoutExceptionを除いたサービスメソッドを呼び出すことはできません。
申し訳ありませんが、私のアプリはANYバインディングタイプでは動作しません。代わりに、netTcpBindingをテストするには、新規のプロジェクトを作成し、Add(int n1、int n2)メソッドを持つ新しいサービスを試してみました。私はinstallutil.exeを使用してターゲット2008サーバーにサービスを手動でインストールしました。クライアントにはサービス参照の更新を行い、問題なくプログラムを実行しました。私は同じ構成を元のサービスにコピーしようとしましたが、動作したくないのですが、それでも動作しません... * rips hair out *! – templar112