43

以及如何解决它。我想记录每个抛出的异常以进行维护。

4

3 回答 3

43

这是 .Net 中的一个已知问题 - Web 服务永远不会触发 Application_Error。不确定是否有任何原因是设计使然,但它就是行不通。

几年前,杰夫·阿特伍德 ( Jeff Atwood) 有一篇关于此的帖子(和后续文章),其中有以下想法:

  • 在每个 Web 服务方法周围放置一个 try-catch 块
  • 使用外观设计模式并在父对象中包含 try-catch
  • 编写自定义 SOAP 扩展或 HTTPModule

我唯一关心的是第一个,尽管这看起来工作量很大。

于 2008-10-17T11:50:47.563 回答
17

更好:HttpApplication.Error 事件

笔记:

如果您的 Web 应用程序包含 XML Web services,则不能使用 Error 事件来处理这些服务的全局异常。XML Web services 的 HTTP 处理程序使用 XML Web services 中发生的任何异常,并在调用 Error 之前将其转换为 SOAP 错误。要处理 XML Web 服务异常,请构建一个 SOAP 扩展以在自定义全局异常处理程序中处理 Web 服务异常。有关详细信息,请参阅XML Web 服务中的处理和引发异常

于 2009-07-17T02:26:12.093 回答
14

对于任何在此主题上寻找 Microsoft 信息的人,请参阅此处:“在 XML Web 服务中处理和引发异常”。

这是相关部分:

一个 Web 应用程序可以由多个 XML Web services 组成,但是 Global.asax 文件中的 Application_Error 事件不能用于全局异常处理。XML Web services 的 HttpHandler 使用 XML Web services 执行时发生的任何异常,并在调用 Application_Error 事件之前将其转换为 SOAP 错误。

于 2009-07-16T19:21:45.650 回答