English 中文(简体)
向 ASP.NET 添加全局异常处理。
原标题:
  • 时间:2009-01-14 17:44:24
  •  标签:

我在一個相當大的網站工作。我們目前有四個Web服務器和一個活動被動的db集群,運行ASP.NET 2.0和C#。目前,我們的異常處理沒有捕獲到正確的異常。我聽說這是因為Server.GetLastError()不是線程安全的(注意:我們目前不使用Server.GetLastError().GetBaseException(),這可能是我們沒有得到正確錯誤的原因)。

我们正在启动一个项目来捕获确切的异常,以便我们可以实际看到错误的根本原因,我正在努力寻找最好的方法来实现它。

我们的选项是:

  • Go through all of our classes/methods(hundreds, if not thousands) to add try/catch/finally blocks to trap the correct exception.
  • Figure out a way to properly handle the exceptions in the global.asax.

那么,我想我的问题是:

  • Is Server.GetLastError() thread safe?
  • If two exceptions are thrown at the same time, will both be logged?
  • Is there a better way to handle this than what I have listed?
问题回答

我认为您不应该改动初始的应用程序。您应该在web.config中创建和注册一个IHttpModule,该模块可以挂钩错误事件以递归记录抛出的异常及其内部异常。

更多阅读

你应该看看Steven A. Lowe的CALM产品。(链接) (链接)

这是一个非常好的插件解决方案。

(免责声明:我是其中一位测试人员之一)





相关问题
热门标签