2009-01-14 84 views
1

我在一個相當大的網站上工作。我們目前有4個Web服務器和一個運行ASP.NET 2.0並使用C#的活動被動數據庫羣集。目前,我們的異常處理不會捕獲正在拋出的正確異常。我聽說這是因爲Server.GetLastError()不是線程安全的(注意:我們目前不使用Server.GetLastError().GetBaseException()這可能是我們爲什麼沒有得到正確的錯誤)。將全局異常處理添加到ASP.NET

我們正在開始一個項目來捕獲確切的異常,所以我們實際上可以看到錯誤的根本原因,並試圖找到最好的方法來做到這一點。

我們的選擇是:

  • 去通過我們所有的類/方法(數百,甚至數千)嘗試/ catch/finally塊添加到陷阱的正確例外。
  • 找出一種方法來正確處理global.asax中的異常。

所以我想我的問題是:

  • Server.GetLastError()線程安全的?
  • 如果同時拋出兩個異常,是否都會被記錄?
  • 有沒有比我列出的更好的方式來處理這個問題?

回答

0

您應該看看Steven A. Lowe'sCALM產品。

這是一個非常好的'插件'解決方案。

(聲明:我是beta測試員之一)

1

我相信你不應改變原申請的。您應該在web.config中創建並註冊一個掛鉤在Error事件上的IHttpModule,以遞歸方式記錄拋出的異常並且它是內部異常。

進一步閱讀

+1

這怎麼比在Global.asax中的Application_Error方法有什麼不同? – user13053 2009-01-14 18:10:02