Global.asax Application_Error 未在 IIS 上触发

发布于 2024-12-01 01:44:44 字数 777 浏览 0 评论 0原文

我有一个 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>

请帮忙。

I have an ASP.NET MVC 2 page. During error or exception, the Application_Error method in Global.asax is not firing on IIS7.

**But it does fire if I run the web app from VS2010 (localhost:someport)

My code (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");
}

My config:

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

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

Please help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如梦 2024-12-08 01:44:44

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

This is because your web config settings are overriding the default behaviour. You will need to disable this (customErrors="Off" and remove the defaultRedirect (or set the correct status codes conditionally which allows unset errors to fall through to the Application_Error event). if you disable this, you can handle the error in the Application_Error event then redirect the user or display a message from this event. This web config setting is handling the errors and only unhandled errors will bubble up to this event.

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

One more thing.
Application_Error isn't fired for exception that is raised in class/method that is marked HandleError attribute on IIS.
It fires if you run your app on asp.net development server but doesn't work for real IIS. (I fell in this pitfall).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文