4

クライアントへのコールバックを使用するWCFサービスを作成しようとしています。接続(インターネット、ネットワーク)があり、クライアントまたはチャネルのいずれかがチャネルを明示的に閉じていない限り、チャネルを開いたままにしておく必要があります。

チャネルを開いたままにするために(アクティビティがなくても)、WCFがサポートする信頼できるセッションを見つけました。信頼できるセッションを使用することにより、考慮に入れる必要のある2つのタイマーがあります。Binding.ReceiveTimeoutReliableSession.InactivityTimeout

インターネットで検索した後も、この2つがどのように連携しているかを正確に理解することはできません。2つのいずれかがタイムアウトすると、接続に障害が発生した状態になることを私は知っています。

私の最初の質問:信頼できるセッションが有効になると、正確にはどうなりますか?

私の2番目の質問:ここで、msdnが次のように言うのはなぜですか?

いずれかの非アクティブタイマーが起動すると接続が切断されるため、ReceiveTimeoutより大きくなるとInactivityTimeoutを増やしても効果はありません。これらのタイムアウトの両方のデフォルトは10分であるため、信頼できるセッションを使用する場合は、違いを生むために常に両方を増やす必要があります。

4

1 に答える 1

1

最初の質問に対する回答を得るには、この質問に対する適切な回答をご覧ください。

WCFの信頼できるセッションの目的は何ですか?

私の場合、msdnサイトでの説明は明らかです。ReceiveTimeoutで指定された時間(たとえば10分)に達すると、信頼できるセッションでキープアライブビーイングが送信されていても(たとえば1分ごとに)接続が終了します。 。

毎分送信されるキープアライブビーイングは、inactivityTimout(たとえば5分)に到達しないようにします-したがって、チャネルは無限に開いたままになります-が、ReceiveTimeoutで指定された時間の後、セッション/チャネルは閉じられます。

したがって、私が理解している限り、ReceiveTimeoutは常にinactivityTimeoutよりも大きいか、同じである必要があります。

于 2012-10-17T08:01:45.633 に答える