1. 程式人生 > >Response.Redirect導致session丟失的解決辦法

Response.Redirect導致session丟失的解決辦法

今天開發中,終於解決了多天留下的一個鬱悶事情,最近採用aspx MVC進行一個網站的開發,其他工作都做好了,修正之前後臺登陸第一次時候,無法獲取session這個bug的問題,google了一下,在老外一個網站上找到了方法http://weblogs.asp.net/bleroy/archive/2004/08/03/don_2700_t-redirect-after-setting-a-session-variable-_2800_or-do-it-right_2900_.aspx

原來asp.net 執行 Response.Redirect 時會強制終止當前Response ,不傳送當前頁面的cookie 給瀏覽器,而是傳送一個指令告訴瀏覽器重新發送一個新的HTTP請求到新的URL,結果導致當前的Session 丟失。



老外的一個解決辦法就是使用Response.Redirect(“~/default.aspx”, false)

另外,在MVC模式下,還有一個方法就是使用MVC TempData 

TempData的特性就是可以在兩個Action之間傳遞資料,它會儲存一份資料到下一個Action,並隨著再下一個Action的到來而失效。所以它被用在兩個Action之間來儲存資料,比如,這樣一個場景,你的一個Action接受一些post的資料,然後交給另一個Action來處理,並顯示到頁面,這時就可以使用TempData來傳遞這份資料。

或使用 Server.Transfer()

Server.Transfer方法是面象物件開發所使用的方法,其把流程從當前頁面引導到另一個頁面中,新的頁面使用前一個頁面的應答流,所以這個方法是完全面象物件的,安全性比redirect

高些。