的怪癖在我的Global.asax,我檢查404,並且轉移到404錯誤頁面按以下:的Global.asax錯誤處理:Server.Transfer的
If HTTPExceptionInstance.GetHttpCode = 404 Then
Server.ClearError()
Response.TrySkipIisCustomErrors = True
Response.Status = "404 Not Found"
Server.Transfer("~/Invalid-Page.aspx")
End If
的問題是,我的Invalid-page.aspx使用了一些會話代碼(Session(「somevariable」)),它引發了一個異常「會話狀態只能在enableSessionState設置爲true時使用,無論是在配置文件中還是在Page指令中。「因爲我使用server.transfer(我相信這是一個已知問題?)。
如果我使用Response.Redirect,有沒有問題。但是,這意味着錯誤頁面的標題是200,而不是404。
什麼是最好的解決方法?
謝謝!這一直在困擾我幾個小時。 「TransferRequest」的語義與「Transfer」不同(例如,它顯然創建了一個新的HttpContext,因此當前上下文中的任何Items都會丟失),但是對於丟失的會話問題來說,這是一個很好的解決方法。 – 2013-05-28 14:40:58