在ELMAH获取之前捕获异常并清除它

Dou*_*oug 2 c# asp.net error-handling elmah

我有一个问题,我在Global.asax中捕获异常被抛出.作为此异常处理的一部分,由于此异常,我将用户重定向到特定页面.

我也插入了电子邮件模块的ELMAH错误处理.我不想收到此例外的电子邮件.我也不想在ELMAHs忽略列表中添加这种类型的异常,以防我想要围绕异常进行粒度工作(即,只有当它匹配某些属性时,才会在某些页面上发生)

我想要:

  • Application_OnError一个用户重定向到一个页面(我知道如何做这个部分,更多的程序,我把它留在这里)
  • Application_OnError我抓住它之后停止ELMAH接收此错误

我目前正在调用Server.ClearError()我的App_OnError方法,但仍然收到这些电子邮件.

Dou*_*oug 5

根据ELMAH文档

我把我的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();
    }
}
Run Code Online (Sandbox Code Playgroud)

这样做是为了解除ELMAH异常,如果它是符合我想要的类型 - 在我的情况下是HttpRequestValidationException.

ErrorMail_Filtering只有在打开错误邮件过滤器时才需要该方法 - 我这样做.