2010-05-26 44 views
29

有关此主题的文档很差。我在Windows服务中使用NetTcpBinding使用WCF服务。问题是会话在一段时间内处于非活动状态时会被丢弃。我需要的是始终活着的会话。 WCF是可靠的会话吗?或者我可以玩超时设置?WCF可靠会话的目的是什么?

回答

39

不,可靠的会话会像其他任何会话一样超时。主要问题是:你为什么要让你的会议“无尽”?如果你真的需要这个,你需要在会​​话中加快超时。

可靠会话的要点是调用者会知道任何丢失的消息。与流行的观点相反,可靠的会话不能保证传递消息 - 但是如果消息不能传递,至少调用者会知道它。

检查出一些这些资源,为更多的背景信息:

+0

感谢澄清什么是可靠的会话。 关于“无尽的”会话:我有一个事件驱动的系统。当消息到达时,客户端应该调用一些WCF服务。消息可以每秒发生,重要的是要跟上每一个。有时候收到邮件的时间间隔可能会比一秒钟大得多,比如说一两天。所以我需要一些保持活性的机制。 – 2010-05-26 09:16:13

+1

@bsnote:为什么?如果两条消息之间的时间间隔为两天,那么在我看来,这个会话始终处于活动状态并没有意义。 – 2010-05-26 11:24:02

+0

每次收到消息时创建一个通道的成本太高,以防消息每秒收到一次。虽然我同意当时间间隔为一天的时候没有任何意义。 – 2010-05-26 15:49:01

6
如果你不使用通道

,它将关闭他过了一会儿。 您可以更改绑定的默认超时时间(即10分钟)。

NetTcpBinding binding = new NetTcpBinding(); 
binding.ReceiveTimeout = TimeSpan.MaxValue; 
binding.ReliableSession.InactivityTimeout = TimeSpan.MaxValue; 

阅读更多MSDN