2010-10-15 31 views
1

如果我的服务遇到错误,我希望该线程返回一个错误并终止,但以后的请求应该仍然正常工作。我该怎么做呢?如果我有一个未处理的异常,它将被传回客户端,但服务停止。C#WCF服务抛出一个错误,但继续

回答

0

什么样的未处理的异常?除非异常是终止异常(堆栈溢出等),否则ServiceHost应该继续响应随后的请求。

+0

我在抛出FaultException Xodarap 2010-10-15 17:03:16

0

默认情况下,每个请求都会获得自己的服务实现实例,因此,其中一个请求处理程序中的错误不应影响其他请求处理程序。

因此,在WCF的默认行为中,每个请求都会获得一个品牌崭新的服务类新实例,然后处理该请求并终止 - 是否发生异常。可能的问题是例外情况 - 如果您让它传递回客户端“未过滤”,那么通道(客户端和服务器之间的通信链路)可能会“故障”,从而无法使用。

如果您将所有服务例外包装到FaultExceptionFaultException<T>,那么您的客户端和服务器之间的通道应该没问题。为了捕获服务器上的所有可能的错误,请检查在您的服务类中实现IErrorHandler接口。

+0

如果我使用? – Xodarap 2010-10-15 17:13:46

+0

在这种情况下,您只能同时使用一个实例 - 但每个请求仍会获得自己的服务类副本。 – 2010-10-15 18:31:52

相关问题