我在WCF上调用Method时遇到了一个非常奇怪的问题。 Web和服务代码通过开发完成,在本地开发人员计算机和QA服务器上运行良好。但是当作为Windows服务返回时发布到UAT服务器:
远程端点不再识别此序列。这是最多的 可能是由于远程端点中止。的价值 wsrm:标识符不是已知的序列标识符。可靠的 会议出了问题。
方法本身工作正常,他们从数据库调用构建传输对象,然后在返回对象时抛出异常。
有一个类似的question具有相同的错误,但没有应用任何建议的解决方案。完全相同的代码在所有机器上运行良好,但在服务器上安装时抛出了异常。
答案 0 :(得分:1)
我遇到此错误,并通过添加最大大小数据并增加超时来解决:
<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" />
答案 1 :(得分:0)
我仍然不确定原因,但是这种行为的原因是该方法返回的接口有一个IEnumerable&lt;&gt;属性。用List&lt;&gt;替换它解决了这个问题。
我很想知道为什么这会在我们尝试过的其他所有机器上运行,而不是UAT服务器。
两者上安装的.Net版本完全相同。
我能看到的唯一区别是不同的操作系统。
它运行良好:Windows Server 2008 R2企业版,Windows 7企业版
它引发了例外:Windows Server 2008 R2 Datacenter。
编辑: 虽然这解决了这个问题,但我喜欢一个解释为什么IEnumerable&lt;&gt;可以在我们运行它的每台机器上运行,但在UAT机器上崩溃。
答案 2 :(得分:0)
我得到了相同的错误,但是当在服务代理(客户端)上调用Close()方法时会发生这种错误。我的应用程序打开频道并在2-3分钟内连续进行一系列调用,所有这些调用都成功,但是当关闭()时程序会挂起 closeTimeout (1分钟)的配置时间被称为。