2009-10-09 66 views
8

我在我的ASP.NET項目中使用ELMAH進行錯誤報告。一切都很好,除非我調試一個項目,我不想發送電子郵件報告給允許的用戶。 我該如何完成這個壯舉?如何在web.config和後臺代碼中啓用和禁用ELMAH?

+0

能否請您告訴我們如何在發生錯誤時發送電子郵件?我假設您在發生錯誤時使用ELMAH發送電子郵件。那麼您能向我們展示您的ELMAH的web.config設置嗎? – 2011-04-20 01:17:41

回答

8

假設您的開發和生產環境中有不同的web.config文件,只需在您的開發web.config中禁用Elmah即可。您需要註釋掉(或移除)httpModules部分中的Elmah.ErrorLogModule元素。

+2

我不知道從代碼隱藏中禁用ELMAH的方法。但是,您可以使用特定於配置的web.config文件在開發環境中關閉它(或僅使用其他類型的日誌記錄)。請參閱ScottGu的帖子:http://weblogs.asp.net/scottgu/archive/2007/09/21/tip-trick-automating-dev-qa-staging-and-production-web-config-settings-with-vs -2005.aspx – 2009-10-10 04:40:00

+0

它不能評論ErrorLogModule。 來自elmah部分的評論errorLog! http://stackoverflow.com/a/25394016/2152973 – 2016-01-21 19:30:57

5

也許您可以使用ErrorFiltering來關閉Global.asax中的電子郵件日誌記錄。例如:

void ErrorMail_Filtering(object sender, ExceptionFilterEventArgs e) 
{ 

#if DEBUG 
    e.Dismiss(); 
#endif 

} 
0

另一種方法是使用ErrorMail_Mailing方法。當ELMAH發送電子郵件時,它運行該第一(當存在時在的global.asax.cs)

public void ErrorMail_Mailing(object sender, ErrorMailEventArgs e) 
{ 
#if DEBUG 
    e.Mail.To.Clear(); 
    e.Mail.To.Add("[email protected]"); 
    e.Mail.Subject = "Error in Development"; 
#endif 
} 

上面的例子可以是經由web.Debug.config & web.Release.config的變換。但在這種方法中你可以做更多的事情。請參閱http://scottonwriting.net/sowblog/archive/2011/01/06/customizing-elmah-s-error-emails.aspx