2012-12-12 177 views
5

嗨,感謝您花時間回答我的問題。ASP.NET - 發生異常時發送電子郵件

我有一個asp.net webforms應用程序,我爲一家中型公司的內部目的而構建。

首先讓我說我處理在CRUD操作過程中可能發生的所有異常,並向用戶顯示相應的消息。但是,有沒有一種方法可以以集中的方式首先將innerException消息與堆棧跟蹤一起通過電子郵件發送給我自己,然後向用戶顯示消息?

換句話說,我不想創建一個像EmailException()這樣的方法,並在每個catch(Exception ex)塊中調用它,但是我想在第一次捕獲到所有異常的地方調用它。

如果我的問題不夠清楚,請告訴我。

再次感謝!

+2

在這一點上,這比泥土還舊,但可能仍然是一個可以通過的起點:http://www.developer.com/net/asp/article.php/961301/Global-Exception-Handling-with-ASPNET .htm – Donnie

回答

2

Elmah非常適合這樣的:

  • 的幾乎所有未處理的異常記錄。
  • 用於遠程查看重新編碼的例外的整個日誌的網頁。
  • 一個網頁,用於遠程查看任何一個記錄的異常的完整詳細信息,包括彩色堆棧跟蹤。 *在許多情況下,即使關閉customErrors模式,您也可以查看ASP.NET爲給定例外生成的原始死亡黃色屏幕。
  • 每次發生錯誤時的電子郵件通知。
  • 來自日誌的最後15個錯誤的RSS源。

這是config example

+0

是的,我在看elmah頁面。但是,這隻能處理未處理的異常。我處理從CRUD操作中發生的異常,並在標籤消息中打印,例如「添加新項目時發生問題,管理員將收到此問題的通知。」這意味着我處理這些例外。如果我將未處理的異常和elmah記錄下來,用戶會看到什麼?死亡的黃色屏幕? – Dragan

+0

不,如果你做得對,絕對不是YSOD。讓未處理的錯誤冒泡到您的全局錯誤處理程序。這對錯誤提出了友好的面孔,而Elmah仍然得到了一部分的行動。 –

+0

好的,我會進一步調查elmah記錄後如何處理異常。如果你有一個鏈接,表明這將是偉大的。我接受你的答案。非常感謝,非常感謝。從來沒有聽說過ELMAH之前,正是我正在尋找! – Dragan

3

Elmah很棒,但Log4Net也會爲您提供該功能以及其他日誌功能。你只需要在你的log4net配置中添加一個SmtpAppender定義,以及你想要/需要的任何其他appender。

簡單,容易做到。捕捉任何未處理的異常的最簡單方法是在global.asax上添加一個Application_Error()方法。它是由Asp.Net運行時調用,並會抓住

所有未處理的ASP.NET錯誤,在處理請求 - 換言之, 所有沒有用try/catch塊或在抓到錯誤頁級 錯誤處理程序。

應該指出的是,Elmah,log4net和global.asax的方法都是愉快地共存的。 Elmah只是坐在那裏,並且傾聽,記錄任何通過的異常。

+0

+1。 Log4Net非常棒。 (不要因爲近年來活動不足而避免它)。 –

+0

所以基本上我整合了elmah或log4net,設置了配置文件,然後在application_error()中,我基本上將用戶重定向到錯誤頁面並告訴他此錯誤已記錄,管理員已收到通知? – Dragan

+0

@Dragan是的,這是一個常見的方式來做到這一點 –

相關問題