2012-02-24 32 views
2

我研究我們與IIS 7具有集成模式下運行的問題。我們有幾個應用程序運行在.net 3.5中。我們一直捕獲和處理未處理的異常的標準方法是利用在Global.asax中的Application_Error方法(在這種情況下,未處理的異常是當請求的是不存在的aspx頁面中時創建的HttpException )。是Response.Redirect的使用IIS 7集成模式下的Global.asax可用?

在Application_Error中,我們使用自定義錯誤處理將錯誤記錄到數據庫,發送警報電子郵件,然後重定向到指定的錯誤頁面。錯誤日誌和警報電子郵件按預期工作。重定向不。

我用小提琴手查看請求/響應,我得到一個HTTP 302頁比什麼是我的customErrors部分完全不同。

爲什麼不Response.Redirect的工作的Application_Error?

這裏是到目前爲止我的代碼:

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs) 
    Dim ex As System.Exception = Server.GetLastError 
    Server.ClearError() 

    If Not (TypeOf (ex) Is HttpException) Then 
     //Run our internal error handling here 
    Else 
     Dim httpEx As HttpException = CType(ex, HttpException) 
     Response.Clear() 
     Response.StatusCode = httpEx.GetHttpCode() 
     Response.TrySkipIisCustomErrors = True 
     Server.Transfer("../Error.htm") 
    End If 
End Sub 

這運行正常,當我嘗試訪問不存在的aspx頁面。但是,它不適用於靜態頁面。

我試過這麼多的變化,這段代碼當前沒有自定義錯誤或httpErrors部分運行。

回答

0

如果要進入IIS錯誤頁面,您需要將TrySkipIisCustomErrors設置爲true。

+0

我實現了這一點,它的工作,但只有當我調用Server.Transfer到一個靜態頁面,而不是一個aspx頁面。任何想法爲什麼? – Chuck 2012-02-28 01:07:58

+0

@Chuck您可以發佈您的Application_Error代碼和你的web.config你通過部分? – 2012-02-28 01:28:41

+0

我會在早上發佈它。謝謝。 – Chuck 2012-02-28 02:11:59

相關問題