我遇到一个问题,即我在Global.asax中捕获异常。作为此异常处理的一部分,由于此异常,我将用户重定向到特定页面。
我也插入了电子邮件模块的ELMAH错误处理。我不想收到此例外的电子邮件。我也不想在ELMAHs忽略列表中添加这种类型的异常,以防我想对异常进行细粒度的处理(即,只有当它匹配某些属性时才会发生在某些页面上)
我想:
Application_OnError
将用户重定向到一个页面(我知道如何做这个部分,更多的是我在这里留下的程序)Application_OnError
停止ELMAH
在我抓住它后收到此错误我目前正在Server.ClearError()
方法中调用App_OnError
,但仍在接收这些电子邮件。
答案 0 :(得分:5)
我将我的Application_OnError
方法放在我的Global.asax中,但我还添加了以下全局方法:
void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs args)
{
Filter(args);
}
void ErrorMail_Filtering(object sender, ExceptionFilterEventArgs args)
{
Filter(args);
}
void Filter(ExceptionFilterEventArgs args)
{
if (args.Exception.GetBaseException() is HttpRequestValidationException)
{
args.Dismiss();
}
}
如果它与我想要的类型相匹配,那么它会解除ELMAH异常 - 在我的例子中是HttpRequestValidationException
。
只有在您启用了错误邮件过滤器时才需要ErrorMail_Filtering
方法 - 我这样做。
答案 1 :(得分:0)
您是否也使用[HandleError]
属性?我的方式是:
HandleError
属性,并且不会在我不想让ELMAH参与的操作中应用该属性。Application_Error
代码将按原样存在。