2010-09-01 50 views
1

的怪癖在我的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。

什麼是最好的解決方法?

回答

2

怪異的頁面指令! Server.TransferRequest正是我想要的而不會丟失會話狀態!

+2

謝謝!這一直在困擾我幾個小時。 「TransferRequest」的語義與「Transfer」不同(例如,它顯然創建了一個新的HttpContext,因此當前上下文中的任何Items都會丟失),但是對於丟失的會話問題來說,這是一個很好的解決方法。 – 2013-05-28 14:40:58

0

檢查enableSessionState設置爲true Invalid.aspx

+0

我已經添加了它,但它沒有什麼區別。據我瞭解,這個問題似乎是由server.transfer引起的,這似乎是在破壞會話... – 2010-09-02 15:21:28

相關問題