DuplexChannelFactory
生成されたプロキシではなく、を使用してWCFクライアントチャネルを作成しています。
FaultException<MyFault>
特定の方法については、サーバー側で既知のものをスローしています。必要に応じて、サービスインターフェイスをマークアップしました[FaultContract(typeof(MyFault))]
。
クライアント側では、これをキャッチしFaultException<MyFault>
てエラーを表示します。
これはすべて問題なく機能しますが、何らかの理由で、WCFはクライアントコードに制御を戻す前にサービス呼び出しを5回再試行しています。これにより、クライアントで顕著な遅延が発生しています。
デバッガーは、コードの次の行に進む前に、クライアントコードのサービス呼び出しで5回中断します。それに踏み込むことはできませんが、呼び出しスタックは、WCFの奥深くで例外がスローされていることを示しています。
サービス側のブレークポイントは1回だけ起動します。
制御が私に戻ったら、チャネルに障害は発生しません。
デバッガーの出力は次のことを示しています。
A first chance exception of type 'System.ServiceModel.FaultException`1' occurred in MyService.dll
Additional information: Fault Test
A first chance exception of type 'System.ServiceModel.FaultException`1' occurred in System.ServiceModel.dll
Additional information: Fault Test
A first chance exception of type 'System.ServiceModel.FaultException`1' occurred in System.ServiceModel.dll
Additional information: Fault Test
A first chance exception of type 'System.ServiceModel.FaultException`1' occurred in System.ServiceModel.dll
Additional information: Fault Test
A first chance exception of type 'System.ServiceModel.FaultException`1' occurred in System.ServiceModel.dll
Additional information: Fault Test
A first chance exception of type 'System.ServiceModel.FaultException`1' occurred in mscorlib.dll
Additional information: Fault Test
これは正常な動作ですか?予想される既知の障害を返すときに、WCFが再試行するのはなぜですか?