WCF サービスの net.pipe エンド ポイントに関連する問題に直面しています。Windows 2008 R2 マシンで必要なサーバーの役割 (アプリケーションと Web の役割) と機能 (Windows のライセンス認証) を構成しました。net.tcp、net.pipe、および http エンドポイントを使用してサンプルの wcf サービスを作成し、IIS でホストしました。サイト レベルと Web アプリケーション レベルで必要なバインディングを有効にしました。net.tcp & http エンドポイントは正常に動作しています。ただし、以下に示すように net.pipe エンドポイントのエラーが発生します
System.ServiceModel.EndpointNotFoundException: メッセージを受け入れることができる net.pipe://localhost/MyWCFService/Service1.svc でリッスンしているエンドポイントがありませんでした。これは、多くの場合、アドレスまたは SOAP アクションが正しくないことが原因です。詳細については、InnerException (存在する場合) を参照してください。
サーバー スタック トレース:
System.ServiceModel.Channels.ConnectionUpgradeHelper.DecodeFramingFault (ClientFramingDecoder デコーダー、IConnection 接続、URI 経由、文字列 contentType、TimeoutHelper& timeoutHelper) で
System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.SendPreamble (IConnection 接続、ArraySegment`1 プリアンブル、TimeoutHelper& timeoutHelper) で
System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.DuplexConnectionPoolHelper.AcceptPooledConnection (IConnection 接続、TimeoutHelper & timeoutHelper) で
System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection (TimeSpan タイムアウト) で
System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.OnOpen (TimeSpan タイムアウト) で
System.ServiceModel.Channels.CommunicationObject.Open (TimeSpan タイムアウト) で
System.ServiceModel.Channels.ServiceChannel.OnOpen (TimeSpan タイムアウト) で
System.ServiceModel.Channels.CommunicationObject.Open (TimeSpan タイムアウト) で
System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call (ServiceChannel チャネル、TimeSpan タイムアウト) で
System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce (TimeSpan タイムアウト、CallOnceManager カスケード) で
System.ServiceModel.Channels.ServiceChannel.Call (文字列アクション、ブール値一方向、ProxyOperationRuntime 操作、オブジェクト [] イン、オブジェクト [] アウト、TimeSpan タイムアウト) で
System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage methodCall、ProxyOperationRuntime 操作) で
System.ServiceModel.Channels.ServiceChannelProxy.Invoke (IMessage メッセージ) で
[0] で例外が再スローされました:
System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg、IMessage retMsg) で
System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData& msgData、Int32 型) で
NetPipeValidation.ServiceReference1.IService1.GetData (Int32 値) で
NetPipeValidation.ServiceReference1.Service1Client.GetData (Int32 値) で
NetPipeValidation.Form1.button1_Click (オブジェクトの送信者、EventArgs e) で
私の最初の疑いは、net.pipe プロトコルが適切にアクティブ化されていないことでした。そのため、必要なすべての Windows サービスが正しく実行されていることが検証されました (WAS、Net.Pipe アダプター、Net.Tcp アダプター)。SMSvcHost.exe.config ファイルも確認し、適切な構成であることを確認しました。
すべてのサービスが実行されているので、パフォーマンス カウンターを有効にして、net.pipe の登録が成功したかどうかを確認しました。Regitrations Active for net.pipe と Uris Registered for Net.pipe は 1 としてカウントされます。これらのカウンター値を使用して、エンドポイントが適切に構成され、サーバー側の観点から有効であると仮定します。
何らかの理由で、クライアント側からエンド ポイントに到達できません。マシンで行う必要がある他の検証はありますか?