2011-12-21 149 views
0

我有一个从客户端调用的WCF服务。当调试期间客户端和客户端之间存在数据密集的来回停顿时,某种程度上存在服务异常,服务必须重新加载。在我的情况下,该服务大约需要10分钟才能加载(加载数据)。我没有在WCF本身抛出任何异常。我在“try and catch {return null}”(将null返回给客户端而不是中断)中封装了所有服务调用/函数,但该异常仍在客户端发生并且服务发生故障。异常抛出WCF而不抛出异常

这个错误在哪里发生?这种通信是否会被忽略,WCF服务内部的一些随机例外。我想要捕获此异常并且不会对整个服务发生故障(需要等待10分钟才能重新启动服务)。是否有任何工具/代码可以捕获WCF内部的任何和所有异常,并且不会造成错误。网络连接中断等一些例外情况不在我们的控制范围之内。我不抛出任何异常我自己喜欢“新的异常(”有事发生“)为例说明。)

感谢您的帮助。

+2

什么是例外?它说什么?是否有InnerException?需要更多细节。 – Amy 2011-12-21 01:07:34

+0

它是“CommunicationException”。 – iefpw 2011-12-21 01:48:11

+0

{“底层连接已关闭:接收端发生意外错误。”} {“无法从传输连接读取数据:现有连接被远程主机强制关闭。”} {“接收时发生错误http://asdf232.com/Service.svc的HTTP响应,这可能是由于服务端点绑定不使用HTTP协议造成的,也可能是由于HTTP请求上下文被服务器中止(可能是由于该服务关闭)。请参阅服务器日志以获取更多详细信息。“} – iefpw 2011-12-21 01:52:06

回答

0

请参阅我的回答here启用跟踪,这样就可以计算出除此之外,我怀疑任何人都可以给你一个坚实的理由,因为你为什么遇到你的WCF服务问题

+0

这在调试过程中发生,它在MSDN communicationexceptionarticle中说。有关故障等的信息 – iefpw 2011-12-21 01:56:58

0

只是一个猜测:你说你的服务加载了很多数据你从服务中返回多少数据?如果你返回一个巨大的列表,这个异常可能是由错误的客户端 - 服务器配置引起的,你应该增加maxReceivedMessageSize和maxBuff erSize;有时也会在服务器和客户端上增加DataContractSerializer的maxItemsInObjectGraph。

此外,为了捕获服务器上的所有异常而不是多个try-catch块,您可以实现IErrorHandler。