Global.asax Application_Error 未在 IIS 上触发
我有一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是因为您的 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).