我有一个 C# WebService 应用程序,我想在其中捕获从应用程序抛出的所有未处理的异常。
我怎样才能做到这一点?
由于某种原因,Web 服务不会触发 Application_Error 事件(请参阅其他问题)。Jeff Atwood 先生本人在编码恐怖博客上发表了一些建议。
他写:
* 对每个 WebService 方法进行 try..catch。这些方法往往是其他类的包装器,所以这并不像听起来那么糟糕,但它仍然不是很好。
* 使用 Facade 设计模式从父对象派生所有对象......基本上对 .Execute 方法执行 try..catch。嗯,谢谢,但不,谢谢。
* 编写自定义 SOAP 扩展或 HttpModule。这听起来很合理,但……很难。如果它是一个很酷、很重要的扩展或 HttpModule,难道不是已经有人写了吗?
一种方法是订阅处理程序AppDomain.UnhandledException
中某处的事件App_Start
。