在WCF中具有“无法识别的序列”消息的CommunicationException

我在使用WCF服务时遇到了CommunicationException。 消息是:

远程端点不再识别此序列。 这很可能是由于远程端点中止。 wsrm:Identifier的值不是已知的Sequence标识符。 可靠的会议出了问题。

调用契约方法后,会抛出exception。 在调用contract方法之前,通道状态为Opened。 我捕获此exception后恢复我的服务客户端,并且一段时间它工作正常。 但是这个错误再次发生。 似乎超出了一些超时,但我无法理解究竟是哪一个。

我使用带有reliableSession的wsHttpBinding。 InactivityTimeout设置为半小时,我确信它没有被超过,因为exception被抛出更早。

我解决了这个问题。 原因是服务器端的RecieveTimeout。 它设置为1分钟,因此在1分钟服务器用于关闭通道之后没有请求,并且当客户端试图调用合同时,由于超时,通道已经崩溃。

我在阅读本文后找到了解决方案:

http://msdn.microsoft.com/en-us/library/system.servicemodel.reliablesession.inactivitytimeout.aspx

我在设置返回对象列表的新WCF服务时收到此错误。

我的理解是WCF服务只能传递非常简单的对象。

因此,除了公共属性之外的任何对象都不可转让。

该对象有一个只读属性做一些逻辑。

一旦我摆脱了这个,重建并更新了Web引用,错误就消失了。

提示:如果您要返回一个对象并且它具有属性,请检查每个对象的获取和设置。 我们遇到了一个问题。

我已经看到当应用程序池被回收时会发生这种情况。

请查看此博客的最后一部分,了解服务回收。