当前位置:  开发笔记 > 后端 > 正文

为什么global.asax Application_Error方法不捕获ASMX服务抛出的异常?

如何解决《为什么global.asaxApplication_Error方法不捕获ASMX服务抛出的异常?》经验,为你挑选了3个好方法。

以及如何解决它.为了维护目的,我想记录每个抛出的异常.



1> Raelshark..:

这是.Net中的已知问题 - Application_Error永远不会为Web服务触发.不确定它是否有任何原因可以通过设计,但它不起作用.

杰夫阿特伍德几年前就此发表了一篇文章(并跟进),提出了以下想法:

在每个Web服务方法周围放置一个try-catch块

使用外观设计模式并在父对象中包含try-catch

编写自定义SOAP扩展或HTTPModule

我唯一关心的是第一个,即使它似乎很多工作.



2> John Saunder..:

更好:HttpApplication.Error事件:

注意:

如果Web应用程序包含XML Web服务,则不能将Error事件用于这些服务的全局异常处理.XML Web服务的HTTP处理程序消耗XML Web服务中发生的任何异常,并在调用Error之前将其转换为SOAP错误.要处理XML Web服务异常,请构建SOAP扩展以在自定义全局异常处理程序中处理Web服务异常.有关更多信息,请参阅XML Web Services中的处理和抛出异常.



3> kbaribeau..:

对于任何寻求微软关于此主题的人,请参阅此处:" 处理和抛出XML Web服务中的异常 ".

这是相关部分:

Web应用程序可以包含多个XML Web服务,但Global.asax文件中的Application_Error事件不能用于全局异常处理.用于XML Web服务的HttpHandler消耗在执行XML Web服务时发生的任何异常,并在调用Application_Error事件之前将其转换为SOAP错误.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有