我一直在客户端获得WCF服务处于故障状态.如何在不破坏WCF服务的情况下捕获WCF异常?

Inf*_*ner 8 c# asp.net wcf

我有一个WCF服务多个UI消耗.当用户无法访问数据库时,我从数据库中获得了未经授权的异常.我没有在服务器端捕获异常并将其发送到客户端.

在客户端(asp.net网页)上,我看到异常 - 用户无法访问数据库,登录失败. 这一切都很好.但是......如果我再次调用WCF服务,我会得到服务处于故障状态的异常.只有open才能重新启动整个WCF服务.WCF服务作为Windows服务托管.

捕获异常的最佳方法是什么,在服务器端记录异常,将异常详细信息发送回客户端而不破坏服务?谢谢

Tim*_*Tim 6

未处理的异常将使通信通道出错.正如其他人所指出的那样,必须通过调用来中止故障通道Abort()- 它不能被关闭而且不能再次使用.

要解决问题的其他部分,"捕获异常的最佳方法,在服务器端记录异常,将异常详细信息发送回客户端而不破坏服务?",您需要使用FaultException类.

此外,您可以使用IErrorHandler接口连接服务主机以捕获未捕获的任何异常(即,全局错误处理程序).有很多关于如何在网上执行此操作的示例 - 只需google for WCF IErrorHandler.

这是一对夫妇:

使用IErrorHandler进行WCF异常处理

WCF可扩展性 - IErrorHandler