WCF - 远程终结点不再识别此序列
本文关键字:识别 不再 结点 程终 WCF | 更新日期: 2023-09-27 18:32:00
我遇到了一个非常奇怪的问题,通过WCF调用方法。Web和服务代码通过开发完成,在本地开发人员机器和QA服务器上运行良好。但是当作为 Windows 服务发布到 UAT 服务器时返回:
远程终结点不再识别此序列。这是最 可能是由于远程终结点中止。的价值 wsrm:标识符不是已知的序列标识符。可靠的 会话出错。
方法本身工作正常,它们从数据库调用构建传输对象,然后在返回对象时抛出异常。
有一个类似的问题具有相同的错误,但没有应用任何建议的解决方案。完全相同的代码在所有计算机上都能正常工作,但在服务器上安装时会引发异常。
我遇到了这个错误,我通过添加最大大小数据并增加超时来解决:
<binding name="WSHttpBinding_ILetterRegistrationService" closeTimeout="00:50:00" openTimeout="00:50:00" receiveTimeout="00:50:00" sendTimeout="00:50:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="52428800" maxReceivedMessageSize="2000000" messageEncoding="Mtom" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="200000000" maxArrayLength="200000000" maxBytesPerRead="524288" maxNameTableCharCount="524288" />
<reliableSession ordered="true" inactivityTimeout="00:50:00" enabled="true" />
<security mode="None">
<transport clientCredentialType="Windows" proxyCredentialType="None" realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true" />
</security>
</binding>
<endpoint address="http://myLink.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ILetterRegistrationService" contract="LetterReg.ILetterRegistrationService" name="WSHttpBinding_ILetterRegistrationService" />
我仍然不确定为什么,但这种行为的原因是该方法返回的接口具有 IEnumerable<> 属性。将其替换为列表<>解决了该问题。
我很想知道为什么这在我们尝试过的所有其他机器上都有效,但不适用于 UAT 服务器。
两者上安装的 .Net 版本是相同的。
我能看到的唯一区别是不同的操作系统。
它适用于:Windows Server 2008 R2 企业版、Windows 7 企业
版它抛出了异常:Windows Server 2008 R2 Datacenter。
编辑:虽然这解决了这个问题,但我希望得到一个答案来解释为什么IEnumerable<>可以在我们运行它的每台机器上运行,但在UAT机器上崩溃。
我得到同样的错误,但是当在服务代理(客户端)上调用 Close() 方法时会发生。我的应用程序打开通道并在 2-3 分钟内进行一系列连续调用,所有这些调用都成功,但在调用 Close() 时,程序在配置的 closeTimeout(1 分钟)持续时间内挂起。