5

3 つの異なる二重 WCF チャネルをホストする Windows サービスがあります。クライアントは、コールバック コントラクトを介して更新を送信するために接続できます。基本的に 3 つの pub-sub チャネルがあります。

このサービスは、クライアントが接続されている場合、バウンスに時間がかかります。への呼び出しが返されるServiceHost.Closeまでに 10 秒かかります (したがって、サービスが停止するまでに 30 秒以上かかります)。my closeTimeoutin config は 10 秒であることがわかります。この値を変更すると、これが問題の原因であることを示します。

すぐにチャネルを閉じるにはどうすればよいですか? 何かがタイムアウトしているという考えは好きではありません。を呼び出すこともできますAbortが、もっと良い方法があるはずです。これまで非二重チャネルでこれを見たことがないので、二重であることと関係があると思います。

理想的には、チャネルに障害が発生したことをクライアントにすぐに通知して、ユーザーが更新が停止したことをすぐに確認できるようにすることです。

4

2 に答える 2

1

「理想的には、更新が停止したことをユーザーがすぐに確認できるように、チャネルに障害が発生したことをクライアントにすぐに通知することです。」

WCF クライアント インスタンスには、サブスクライブできるイベントがあります。

  • 閉まっている
  • 閉鎖
  • フォルト
  • 開いた
  • オープニング。

Faultedイベントは、デュプレックス チャネルが何らかの理由で停止するとすぐに発生します

サービスホストが閉じるのに30秒以上かかるのはなぜですか。サンプルコードを提供できますか?

于 2012-07-17T21:44:42.943 に答える
0

おそらく、最善の方法は、クライアントに通知し (デュプレックスを使用しているため、可能です)、クライアントにチャネルを閉じさせることです。

于 2011-07-26T16:10:59.977 に答える