2010-01-05 73 views
3

所以我們有一個我們正在使用的基本控制器,它包含一個OnException的重寫,它將錯誤記錄到我們的錯誤跟蹤工具。但是我注意到一些錯誤從來沒有實現過,而且我想知道是否期望應用程序記錄所有錯誤本身就是錯誤的東西,這可能會導致一些錯誤永遠不會被捕獲..?無論哪種方式,最好的解決方案是什麼,或者應該總是預期會發生OnException?我應該在Windows Server上放置一些工具來記錄錯誤,而不是在應用程序本身中?如何捕獲甚至沒有被OnException覆蓋捕獲的錯誤?

回答

2

我不認爲我曾經見過一個錯誤,在某些時候無法捕獲。我也有應用程序級別的日誌記錄,就像你我已經實現了一個基礎控制器。

我的基礎控制器不做任何日誌記錄。相反,我創建了一個自定義動作過濾器,我用它來裝飾我的控制器和動作,並完成所有日誌記錄。

我還在global.asax中添加了一些代碼給Application_Error事件,該事件做了一些日誌記錄,並且還調用錯誤控制器來處理實際的錯誤。

我希望這能以某種方式幫助你。如果你想要我提到的任何代碼,然後添加評論給這個答案,我會提供。它也不是很多代碼。

2

Controller.OnException事件只能捕獲正在執行的Controller的範圍中引發的事件。在http請求映射到控制器之前會發生事件,並且OnException事件不會捕獲這些事件。例如,如果您有一個將RequestContext映射到特定控制器的控制器工廠,則此處拋出的異常不在Controller的範圍內。

你應該在global.asax.Application_Error事件中實現一個「fail safe」異常處理程序。

相關問題