私は、3つの異なる2重WCFチャネルをホストするWindowsサービスを持っています。クライアントは接続して、コールバック契約によって更新を送信できます。本質的に、3つのpub-subチャンネルがある。WCF - クライアントが接続されているときに閉じると、CloseTimeout期間のServiceHostブロックを閉じます。
このサービスは、クライアントが接続されているとバウンスするのに時間がかかります。 ServiceHost.Close
の呼び出しには10秒かかります(サービスが停止するまでに30秒以上かかる)。config内のcloseTimeout
が10秒であることが判明しました。この値を変更すると、これが問題の原因であることが示されます。
チャンネルをすぐに閉じるにはどうすればよいですか?私は何かがタイムアウトしているという考えが好きではありません。私はAbort
と呼ぶことができましたが、より良い方法があるはずです。私は前に非二重チャネルでこれを見たことがないので、二重であることとは何かを仮定します。
チャネルが障害を起こしたとすぐにクライアントに通知されることが理想的であり、ユーザーは直ちに更新が停止したことを知ることができます。
これを試しましたか?チャンネルのもう一方の端が 'CloseTimeout'のためにブロックされないということは何ですか? –
これは私がWCFを使用する方法であり、あなたのような問題は一度もありませんでした。一致しているかもしれない、そうでないかもしれない。私の経験を共有しました。 – adontz