奇怪的WCF net.tcp异常

奇怪的WCF net.tcp异常,wcf,tcp,wcf-security,Wcf,Tcp,Wcf Security,我有一个带有net.tcp传输的WCF客户端/服务。当我在客户端打开WCF跟踪时,我在跟踪中看到以下错误(请参阅service trace viewer的屏幕截图)。奇怪的是,WCF正在处理和恢复这个错误,我的客户机没有收到任何异常,它继续工作。此异常经常发生,随机发生,但不是每次web方法调用都会发生。 客户端(windows XP)身份验证是windows,服务由SPN标识,服务在NLB(windows server 2003)后面的windows服务上自托管。 谁能解释一下这里发生了什么事

我有一个带有net.tcp传输的WCF客户端/服务。当我在客户端打开WCF跟踪时,我在跟踪中看到以下错误(请参阅service trace viewer的屏幕截图)。奇怪的是,WCF正在处理和恢复这个错误,我的客户机没有收到任何异常,它继续工作。此异常经常发生,随机发生,但不是每次web方法调用都会发生。 客户端(windows XP)身份验证是windows,服务由SPN标识,服务在NLB(windows server 2003)后面的windows服务上自托管。 谁能解释一下这里发生了什么事

跟踪xml中的异常stacktrace为:

<ExceptionString>
System.ServiceModel.Security.MessageSecurityException: The server rejected the upgrade request. ---&gt; System.ServiceModel.ProtocolException: Error while reading message framing format at position 0 of stream (state: ReadingUpgradeRecord) ---&gt; System.IO.InvalidDataException: More data was expected, but EOF was reached.
   --- End of inner exception stack trace ---
   --- End of inner exception stack trace ---
</ExceptionString>

System.ServiceModel.Security.MessageSecurityException:服务器拒绝了升级请求。--System.ServiceModel.ProtocolException:读取流的位置0处的消息帧格式时出错(状态:ReadingUpgradeRecord)--System.IO.InvalidDataException:需要更多数据,但已达到EOF。
---内部异常堆栈跟踪的结束---
---内部异常堆栈跟踪的结束---

不确定真正的问题是什么,是否与流媒体有关(我将深入讨论)。无论如何,您可以尝试在服务器端捕获异常并抛出一个CommunicationException


这样,客户端代理就不应该忽略异常,它的状态应该是“有故障的”。

作为背景,我们的一些用户报告了许多异常,我正在调查为什么只有一些PC出现了异常。因此,我在自己的PC上启动了一个服务跟踪,我很惊讶,因为这些异常从未被客户端接收到,WCF正在吞噬它们。我在想,如果这个MessageSecurityException最终导致一些客户机出现真正的异常。某些客户端记录此异常:无法连接到网络。tcp://myservice:9501/SomeService. 连接尝试持续的时间跨度为00:00:21.3873440。TCP错误代码10060:您提到NLB。是否使用粘性会话(会话关联)?否NLB会话关联在端口规则中为无。该服务正在使用具有2分钟空闲时间和1分钟租赁时间的自定义net.tcp绑定。然而,我发现我们无意中使用了persession instancecontextmode,因为有人认为这是默认设置。我将很快将此更改为percall。
catch (Exception ex)
{
    throw new CommunicationException(ex.Message, ex);
}