我研究我們與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部分運行。
我實現了這一點,它的工作,但只有當我調用Server.Transfer到一個靜態頁面,而不是一個aspx頁面。任何想法爲什麼? – Chuck 2012-02-28 01:07:58
@Chuck您可以發佈您的Application_Error代碼和你的web.config你通過部分? –
2012-02-28 01:28:41
我會在早上發佈它。謝謝。 – Chuck 2012-02-28 02:11:59