2我的ASP.NET网页.NET 4.0应用程序。在将应用程序升级到.NET 4.0之前,我使用了Enterpriselibrary来记录并通过电子邮件发送错误,但自从升级后,EnterpriseLibrary日志记录已停止记录,因此我决定切换到Elmah。
我的应用程序的web.config文件的一部分:
<add name="ErrorHandler" type="myWebApp.ErrorHandlingModule, myWebApp" preCondition="managedHandler" />
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
如您所见,那里已经存在Errorhandling模块(ErrorHandlingModule),它会创建一个自定义错误消息(以下代码中的“ex”对象)。最初在ErrorHandlingModule中:
try
{
ExceptionPolicy.HandleException(ex, "myWebApp Error Handling");
}
catch (Exception exApplicationBlockError)
{
try
{
EventLog log = new EventLog("Application");
log.Source = "Application Error";
log.WriteEntry(exApplicationBlockError.ToString(), EventLogEntryType.Error);
}
catch
{
}
}
因为我切换到Elmah:
try
{
//ExceptionPolicy.HandleException(ex, "myWebApp Error Handling");
Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
}
catch (Exception exApplicationBlockError)
{
try
{
EventLog log = new EventLog("Application");
log.Source = "Application Error";
log.WriteEntry(exApplicationBlockError.ToString(), EventLogEntryType.Error);
}
catch
{
}
}
它的效果非常好,但现在的问题是,如果有任何错误,它会引发2个错误电子邮件:一个是自定义的,另一个是默认的Elmah;当然我只想要自定义的。
我没有在程序中添加任何额外的Elmah ErrorFilter,但我需要在我的电子邮件中添加自定义异常。
我应该添加自定义Elmah过滤器来过滤掉所有异常,以便Elmah不会向我发送默认错误电子邮件吗? (或任何其他建议?)
如果有任何帮助,还可以在web.config文件中附加elmah配置:
<elmah>
<security allowRemoteAccess="false" />
<errorMail from="xxxx@myorg.au" to="xxxxx@myorg.au" subject="myWebApp error" async="true" />
</elmah>
提前致谢。节日快乐!
答案 0 :(得分:0)
如果您不希望Elmah发送电子邮件,那么请不要将其配置为首先执行此操作。删除模块配置:
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah">
与任何其他ErrorMail Elmah电子邮件相关的配置,例如
<errorMail from="xxxx@myorg.au" to="xxxxx@myorg.au" subject="myWebApp error" async="true" />
答案 1 :(得分:0)
愚蠢的我,我不应该包括: 。Elmah.ErrorSignal.FromCurrentContext()提高(前); 这就是电子邮件发送两次的原因。但感谢您的帮助。