WCFを不適切に実装している可能性がありますが、NetNamedPipedBindings
何度も呼び出しを行った後、使用中にWCF例外が発生しているようです。
これが私がしていることのハイレベルです。基本的に、私はproc exeの外で作業しており、WCF名前付きパイプを使用して通信を行っています。この属性を使用して、ホストを開いたままにします。
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
ConcurrencyMode = ConcurrencyMode.Multiple)]
次に、クライアントで、static DuplexChannelFactory
一度インスタンス化してから、必要に応じて次の方法で使用するを作成します。
channelFactory.CreateChannel().MakeCall();
ホストが正しく機能していることを確認するために、Pingメソッドを追加しました(ホストは、知らないうちに見逃したくないイベントを送り返すため)。このPingメソッドは5秒に1回実行され、単にtrueを返します。ただし、数分間実行した後、私はを取得しTimeoutException
ます。これが私の例外トレースです:
サーバースタックトレース:System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.OnOpen(TimeSpan timeout)at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)at System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)
System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)at System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel channel、TimeSpan timeout)atSystem.ServiceModel.Channels。 System.ServiceModel.Channels.ServiceChannel.EnsureOpened(TimeSpan timeout)at System.ServiceModel.Channels.ServiceChannel.Call(String action、Boolean oneway、ProxyOperationRuntime operation、Object [] insでのServiceChannel.CallOnceManager.CallOnce(TimeSpanタイムアウト、CallOnceManagerカスケード) 、Object [] outs、TimeSpan timeout)at System.ServiceModel.Channels.ServiceChannel.Call(String action、Boolean oneway、ProxyOperationRuntime operation、Object [] ins、Object [] outs)atSystem.ServiceModel.Channels.ServiceChannelProxy。System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessageメッセージ)でのInvokeService(IMethodCallMessage methodCall、ProxyOperationRuntime操作)
JustDecompileを開いたところ、このエラーがここで発生している可能性が高いことがわかりました。
connection = this.connectionPoolHelper.EstablishConnection(timeout)
ただし、以前に2、3回pingを実行した後、これがタイムアウトになる理由はわかりません。これを無限にするためにどのような設定を設定する必要がありますか、および/またはクライアントまたはサーバー側からこのWCFイベントサーバー(オンデマンド処理にも使用されます)を実装する別の方法はありますか?
アップデート
呼び出しが試行され、戻りがないことを確認し始める前に、約6回pingを実行します。