【问题标题】:Is global.asax Application_Error event not fired if custom errors are turned on?如果打开自定义错误,是否不会触发 global.asax Application_Error 事件?
【发布时间】:2012-08-20 03:14:42
【问题描述】:

如果您在 Web 配置中将自定义错误设置为 RemoteOnly - 这是否意味着 global.asax - Application_Error 中的 MVC 应用程序级错误事件不会因错误而触发?

我刚刚注意到,当我的应用程序中出现某个错误时,我正在远程查看该站点,但没有记录任何错误。但是,当我访问服务器上的应用程序并发生相同的错误时,会记录该错误。

这是自定义错误配置设置:

<customErrors defaultRedirect="/Error/Application" mode="RemoteOnly">
    <error statusCode="403" redirect="/error/forbidden"/>
    <error statusCode="404" redirect="/error/notfound"/>
    <error statusCode="500" redirect="/error/application"/>
</customErrors>

编辑

只是出于对人们的兴趣 - 我最终完全关闭了自定义错误并处理 Application_Error 中的重定向,如下所示:

protected void Application_Error(object sender, EventArgs e)
{
    Exception exception = Server.GetLastError();

    // ... log error here

    var httpEx = exception as HttpException;    

    if (httpEx != null && httpEx.GetHttpCode() == 403)
    {
        Response.Redirect("/youraccount/error/forbidden", true);
    }
    else if (httpEx != null && httpEx.GetHttpCode() == 404)
    {
        Response.Redirect("/youraccount/error/notfound", true);
    }
    else
    {
        Response.Redirect("/youraccount/error/application", true);
    }
}

【问题讨论】:

    标签: c# .net asp.net-mvc


    【解决方案1】:

    如果您不调用 Server.ClearError 或在 Page_Error 或 Application_Error 事件处理程序中捕获错误,则会根据 Web.config 文件部分中的设置处理错误。

    更多信息请参见this SO question

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 2011-04-12
      • 1970-01-01
      • 2013-01-22
      • 1970-01-01
      • 2011-11-01
      相关资源
      最近更新 更多