global.asax Application_Error事件未触发

时间:2015-08-04 08:24:19

标签: asp.net web-config global-asax imageresizer

在我的web.config中,我没有像CustomErrors那样的东西。因为我希望Global.asax能够处理所有事情。

这是我的web.config:

<?xml version="1.0"?>

<configuration>
  <system.web>
    <compilation targetFramework="4.5" debug="false"/>
    <authentication mode="Forms" >
      <forms loginUrl="login.aspx" name=".ASPNETAUTH" protection="None" path="/" timeout="20" >
      </forms>
    </authentication>

    <httpRuntime requestPathInvalidCharacters="&lt;,&gt;,:,\,?" targetFramework="4.5" maxRequestLength="1048576"/>

    <httpModules>
      <add name="ImageResizingModule" type="ImageResizer.InterceptModule"/>
    </httpModules>

  </system.web>

  <system.webServer>

    <validation validateIntegratedModeConfiguration="false"/>

    <modules>
  <add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule"/>
  <remove name="UrlAuthorization"/>
  <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule"/>
  <add name="ImageResizingModule" type="ImageResizer.InterceptModule"/>
</modules>
    <security>
      <requestFiltering allowDoubleEscaping="true">

      </requestFiltering>
    </security>

  </system.webServer>

</configuration>

这是Global.asax中的Application_Error事件:

void Application_Error(object sender, EventArgs e)
{
    try
    {
        Response.Redirect("~/error.html");
    }
    catch
    {
    }
}

我需要web.config吗?

1 个答案:

答案 0 :(得分:0)

我建议您在web.config中使用CustomErrors部分来完成此任务。

也许还可以看一下:Is global.asax Application_Error event not fired if custom errors are turned on?

例如,您可以尝试将此添加到您的web.config中。请注意,我没有测试它,只是将它从上述帖子中复制到一起:

<customErrors defaultRedirect="~/error.html" mode="RemoteOnly">
</customErrors>

关于该主题和您拥有的选项实际上有一篇非常好的博客文章: http://www.codeguru.com/csharp/.net/net_debugging/article.php/c19411/Web-Application-Error-Handling-in-ASPNET.htm

根据我在上面(及相关)文章中收集到的内容,我几乎猜到,你需要在Application_Error中调用Server.ClearError,否则错误会冒泡到web.config错误处理,默认情况下,从远程查看应用程序时将显示友好的错误消息。 (值为&#34; RemoteOnly&#34;)。