【问题标题】:Global.asax Application_Error not firing on IISGlobal.asax Application_Error 未在 IIS 上触发
【发布时间】:2011-11-01 16:18:07
【问题描述】:

我有一个 ASP.NET MVC 2 页面。在错误或异常期间,Global.asax 中的 Application_Error 方法不会在 IIS7 上触发。

**但是如果我从 VS2010 (localhost:someport) 运行 Web 应用程序,它会触发

我的代码(C#):

protected void Application_Error(object sender, EventArgs e)
{
  Exception exception = Server.GetLastError();
  string requestedUrl = HttpContext.Current.Request.Url.ToString();

  Response.Clear();
  // do something
  Server.ClearError();
  Server.Redirect("Error");
}

我的配置:

<customErrors mode="On" defaultRedirect="~/Error">
</customErrors>

<system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules runAllManagedModulesForAllRequests="true" />
</system.webServer>

请帮忙。

【问题讨论】:

    标签: c# asp.net-mvc iis-7 global-asax


    【解决方案1】:

    这是因为您的网络配置设置覆盖了默认行为。您将需要禁用此功能(customErrors="Off" 并删除 defaultRedirect(或有条件地设置正确的状态代码,以允许未设置的错误发生在 Application_Error 事件中)。如果您禁用此功能,您可以在 Application_Error 中处理错误事件然后重定向用户或显示来自此事件的消息。此 Web 配置设置正在处理错误,只有未处理的错误才会冒泡到此事件。

    【讨论】:

      【解决方案2】:

      还有一件事。
      Application_Error 不会因在 IIS 上标记为 HandleError 属性的类/方法中引发的异常而触发。
      如果您在 asp.net 开发服务器上运行应用程序但不会触发它不适用于真正的 IIS。 (我陷入了这个陷阱)。

      【讨论】:

        猜你喜欢
        • 2011-04-12
        • 1970-01-01
        • 1970-01-01
        • 2016-11-12
        • 2011-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-07
        相关资源
        最近更新 更多