以及如何解决它.为了维护目的,我想记录每个抛出的异常.
这是.Net中的已知问题 - Application_Error永远不会为Web服务触发.不确定它是否有任何原因可以通过设计,但它不起作用.
杰夫阿特伍德几年前就此发表了一篇文章(并跟进),提出了以下想法:
在每个Web服务方法周围放置一个try-catch块
使用外观设计模式并在父对象中包含try-catch
编写自定义SOAP扩展或HTTPModule
我唯一关心的是第一个,即使它似乎很多工作.
更好:HttpApplication.Error事件:
如果Web应用程序包含XML Web服务,则不能将Error事件用于这些服务的全局异常处理.XML Web服务的HTTP处理程序消耗XML Web服务中发生的任何异常,并在调用Error之前将其转换为SOAP错误.要处理XML Web服务异常,请构建SOAP扩展以在自定义全局异常处理程序中处理Web服务异常.有关更多信息,请参阅XML Web Services中的处理和抛出异常.
对于任何寻求微软关于此主题的人,请参阅此处:" 处理和抛出XML Web服务中的异常 ".
这是相关部分:
Web应用程序可以包含多个XML Web服务,但Global.asax文件中的Application_Error事件不能用于全局异常处理.用于XML Web服务的HttpHandler消耗在执行XML Web服务时发生的任何异常,并在调用Application_Error事件之前将其转换为SOAP错误.