2011-08-23 71 views
0

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

**但它确实火,如果我跑从VS2010的Web应用程序(本地主机:someport)

我的代码(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> 

请帮忙。

回答

4

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

1

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

相关问题