2009-10-09 62 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