繁体   English   中英

Global.asax中的Application_Error事件在IIS7中未触发,但在IIS6中工作正常

[英]Application_Error event in Global.asax not firing in IIS7, but works fine in IIS6

去年,我们将Web应用程序移到了新服务器上。 以下是迁移之前的系统/应用程序配置规格:

  • Windows Server 2003
  • IIS 6.0
  • ASP.NET 4.0
  • Web表格

以下是移至新服务器后的规格:

  • Windows Server 2008
  • IIS 7.5
  • ASP.NET 4.5.1
  • WebForms / MVC 5混合(由于VS 2013)

问题在于,由于移动导致环境发生了巨大变化之后,Global.asax中的Application_Error事件不再像以前那样触发。 我在此遇到了许多问题(请参阅此问题的结尾),但是所有解决方案似乎都无效。 它们也很老,所以我认为SE应该提供有关此主题的一些更新答案。

我想做的事:

如果抛出特定异常,我想导航到特定错误页面。 否则,请转到我的web.config中定义的error.aspx 自从移动以来,我没有对web.config或代码进行任何更改。 这是Application_Error事件:

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)

    If TypeOf (Server.GetLastError) Is System.Web.HttpRequestValidationException Then
        NavigateToErrorPage("Display special error message here")
    End If

End Sub

web.config中的customErrors

<customErrors mode="RemoteOnly" defaultRedirect="error.aspx" />

那么,我该怎么做才能使应用程序在IIS 7.5中的行为与在IIS 6中的行为相同?

编辑 :我会注意到在本地下本地运行我的应用程序时会触发Application_Error事件。

我发现的其他问题在这里无法帮助我:

没有触发Application_Error事件global.asax

global.asax Application_Error无法启动

当customerrors =“ On”时,Application_Error不触发

如果打开自定义错误,是否会触发global.asax Application_Error事件?

Application_Error不触发?

Global.asax无法在IIS7中为.aspx页触发

事实证明,这些答案毕竟是正确的:

Application_Error不触发?

如果打开自定义错误,是否会触发global.asax Application_Error事件?

我最终将代码更改为此:

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)

    Dim ex As Exception = Server.GetLastError

    If TypeOf ex Is System.Web.HttpRequestValidationException Then
        Server.ClearError()
        'NavigateToErrorPage() calls Server.Transfer()

        NavigateToErrorPage("Display special error message here")
    End If

End Sub

在旧的配置和新的配置之间肯定会在框架方面进行某些更改,因为在此之前它可以很好地工作,因此很困惑。 很有可能是IIS,也可能是MVC被引入到Webforms项目中。 我现在只能进行理论化,但是似乎在Application_Error事件中调用Server.Transfer()也具有调用Server.ClearError()的辅助作用。 但是,在新环境中,情况不再如此。 Server.Transfer()确实确实尝试导航到自定义页面,但是,由于该错误并未在事件结束时被清除,因此ASP.NET的默认错误处理进来了,这使用户无法进入error.aspx

因此,看来这毕竟是一个愚蠢的问题,尽管重要的是要让其他任何经历过剧烈环境变化的人都留在身边,并且想知道为什么他们从未更改过的代码突然停止工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM