如果我的服务遇到错误,我希望该线程返回错误并终止,但后来的请求仍然可以正常工作。我该怎么做呢?如果我有一个未处理的异常,它将被传递回客户端,但随后服务停止。
答案 0 :(得分:0)
什么样的未处理的例外?除非异常是终止异常(Stack Overflow等),否则ServiceHost应继续响应后续请求。
答案 1 :(得分:0)
默认情况下,每个请求都有自己的服务实现实例,因此,其中一个请求处理程序中的错误不应影响其他请求。
因此,在WCF的默认行为中,每个请求都会获得一个品牌打击的服务类新实例,然后处理请求并终止 - 无论是否发生异常。可能的问题是例外 - 如果您将其传递回客户端“未过滤”,则通道(客户端与服务器之间的通信链接)可能会“出现故障”,因此无法使用。
如果将所有服务异常包装到FaultException
或FaultException<T>
,那么客户端和服务器之间的通道应该没问题。为了捕获服务器上的所有可能错误,请检查在服务类上实现IErrorHandler接口。