2010-09-03 116 views
7

我有一个WCF客户端/服务与net.tcp传输。当我打开客户端的WCF跟踪时,我在跟踪中看到以下错误(请参阅服务跟踪查看器的截图)。奇怪的是,WCF正在处理和恢复这个错误,我的客户端没有收到任何异常,并继续工作。这种异常发生频繁,随机,但不是每个Web方法调用。 客户端(Windows XP)身份验证是Windows,服务由SPN标识,服务在NLB(Windows Server 2003)后面的Windows服务上自托管。 任何人都可以解释我在这里发生了什么。奇怪的WCF net.tcp异常

从跟踪XML的异常堆栈跟踪是:

<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> 

Screenshot

+1

作为背景,我们的一些用户报告了很多例外,我正在调查为什么只有一些PC似乎拥有它。所以我在自己的电脑上开始了一个服务跟踪,我很惊讶,因为这些例外从未被客户收到,WCF正在吞噬它们。 我在想这个MessageSecurityException是否最终导致一些客户端获得真正的异常。 某些客户端记录此例外情况: 无法连接到net.tcp:// myservice:9501/SomeService。连接尝试持续时间为00:00:21.3873440。 TCP错误代码10060: – softveda 2010-09-03 01:06:55

+0

您提到了NLB。你使用粘性会话(会话亲和力)? – 2010-09-03 07:55:37

+1

端口规则中没有NLB会话关联无。该服务使用自定义net.tcp绑定,2分钟空闲超时和1分钟超时退出。但是,我发现我们意外地使用了persession instancecontextmode,因为有人认为这是默认设置。我很快就会把它改成percall。 – softveda 2010-09-08 10:47:01

回答

-3

不知道什么叫真正的问题可能是,如果它涉及到流媒体(我会潜水)。无论如何,你可以尝试捕捉服务器端的异常,并抛出CommunicationException

catch (Exception ex) 
{ 
    throw new CommunicationException(ex.Message, ex); 
} 

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