簡體   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