如果启用了“自定义错误”页面,

时间:2018-07-25 13:54:11

标签: asp.net-mvc elmah

我有这个路径/ test / account并且有代码

throw new Exception("error");

在我的web.config中

<customErrors mode="On">
      <error statusCode="404" redirect="~/404.html" />
    </customErrors>

当它的模式为On时,它显示自定义错误页面而不是异常,并且elmah不会记录它。关闭时,它会显示异常并记录下来。

我的理解是,我们需要记录异常,为此,我们有一个记录,但是我们不想在生产中显示那些详细的异常,因此我们有自定义错误页面。

我希望即使在出现异常时显示自定义错误页面,我仍然希望elmah记录它。

1 个答案:

答案 0 :(得分:0)

自定义错误页面实际上确实“吞噬”了异常,结果,ELMAH从未收到有关异常的通知。有一个很好的小技巧来记录处理后的异常,取自ELMAH and custom errors。创建此类:

public class ElmahExceptionLogger : IExceptionFilter
{
    public void OnException (ExceptionContext context)
    {
        if (context.ExceptionHandled)
        {
            ErrorSignal.FromCurrentContext().Raise(context.Exception);
        }
    }
}

然后配置过滤器:

protected void Application_Start()
{
    GlobalConfiguration.Configuration.Filters.Add(new ElmahExceptionLogger());
}