WCFサービスへのリクエストが、タイムアウト前に再送される
WCFサービスアプリケーションを作成し、HTTPSで「信頼できるセッション(reliableSession)」を用いて接続できるように設定しております。
次にクライアントプログラムをWPFで作成し、上記WCFサービスへのサービス参照を作成して通信を行っています。基本的にはそれで通信できているのですが、サーバ側の応答に時間がかかる場合、タイムアウト時間(1分間に設定しております)を待たずに同じリクエストを再送しているようなのです。
Fiddler4で確認したのですが、サーバへ要求を投げてから応答もなく、タイムアウト時間にもなっていない時にもう一度同じ要求を投げています。またしばらく同じ状況が続くともう一度要求が投げられる、というようなことが繰り返され、最初の要求から1分後に、それらの要求がほぼ同時にタイムアウトとなります。
クライアントプログラム自体には、特にタイムアウト時に同じ要求を繰り返すようなコードは組んでおりません。再送が起こる間隔は、3秒程度から20秒以上とばらつきがあります。
渡す引数によってサーバの応答時間に開きがあるようなメソッドを呼び出した際は、応答時間が短いときにはこの現象は起こらず、応答時間が長いとこの現象が起きてしまいます。
この現象を回避することは可能でしょうか? もしこの再送のたびに、WCFサービスの処理がされているならサーバの負荷増大の原因になるので回避したいのですが。
WCFサービスの処理内(*.svc.csのメソッド内)にログ出力を仕込んで検証したところ、再送が起こってもWCFサービスの処理は一回しか実行されていないように見えました。何度も同じ処理がサーバ側で発生しないという確証があれば、無理にこの現象を回避しなくても良いとは考えているのですが、確証が持てないので回避できるものなら回避したいと考えています。