4

我正在尝试制作一个使用回调客户端的 WCF 服务。只要有连接(互联网,网络)并且客户端或通道没有明确关闭通道,我希望通道保持打开状态。

为了保持通道打开(即使没有活动),我找到了 WCF 支持的可靠会话。我看到通过使用可靠会话,需要考虑两个计时器:theBinding.ReceiveTimeoutReliableSession.InactivityTimeout.

在互联网上搜索后,我仍然无法确切了解这两者是如何协同工作的。我知道如果两者中的任何一个超时,连接就会进入故障状态。

我的第一个问题:启用可靠会话时究竟会发生什么?

我的第二个问题:这里,为什么msdn会这样说?

由于如果任一非活动计时器触发,连接就会断开,因此一旦 InactivityTimeout 大于 ReceiveTimeout 就增加它没有任何效果。这两个超时的默认值都是 10 分钟,因此在使用可靠会话时,您始终必须同时增加这两个超时。

4

1 回答 1

1

要获得第一个问题的答案,请查看此问题的不错答案:

WCF 可靠会话的目的是什么?

我在 msdn 网站上的解释很清楚:当到达 ReceiveTimeout 中指定的时间(例如 10 分钟)时,它将终止连接,即使可靠会话发送了保持活动状态(例如每 1 分钟) .

每分钟发送一次保持活动状态将确保永远不会达到 inactivityTimout(例如 5 分钟) - 因此通道将无休止地保持打开状态 - 但在 ReceiveTimeout 中指定的时间之后,会话/通道仍将关闭。

因此,据我了解,ReceiveTimeout 应该始终高于或与 inactivityTimeout 相同。

于 2012-10-17T08:01:45.633 回答