2011-05-09 377 views
4

我使用ASP.Net + VSTS 2008 + .Net 3.5 + C#+ IIS 7.我想知道如果在服務器端,我調用response.redirect到另一個網址在同一個網站應用程序,會話是否會繼續或終止?ASP.Net中response.redirect問題

例如如果我在a.aspx中將session變量foo設置爲值「goo」,那麼在a.aspx中,我將response.redirect調用到b.aspx,無論是在b.aspx中,我都可以100%獲得會話變量foo的值爲「咕「?我的困惑是我聽說response.redirect不會100%繼續會話,這是真的嗎?

由於事先 喬治

+0

如果在這種情況下有一些參考文件,它將會很棒。 – George2 2011-05-09 16:16:22

+1

+1教我新的東西,無疑會從我的代碼中刪除一些錯誤:) – 2011-05-09 16:22:00

回答

1

會話值在會話的整個生命週期中保持不變。會話將在瀏覽器關閉或超時過期後結束,或者顯式關閉。

http://msdn.microsoft.com/en-us/library/ms178581%28v=VS.90%29.aspx

+0

Response.redirect將始終保持會話變量或不變? – George2 2011-05-09 16:19:58

+1

是的,它基本上只是一種手動點擊鏈接的方式。 – 2011-05-09 16:22:01

+4

...或線程被中止,我相信這是默認的響應行爲.Redirect – spender 2011-05-09 16:22:35

4

您可以使用需要bool爲好,這並沒有結束於響應的Response.Redirect的過載。

Response.Redirect("~/default.aspx", false) 

伯特蘭勒羅伊覆蓋它here

+0

謝謝你。我讀了羅伊的回答,感到困惑。這是否意味着Response.Redirect(不指定false參數)將始終終止當前會話?而原因是Response.End被觸發? – George2 2011-05-09 16:23:24

+1

@ George2:「_Response.End實際上停止了使用ThreadAbortException的任何地方的頁面執行。 這裏真正發生的事情是會話令牌在戰鬥中丟失了。傳遞'false'不會中止線程,並應保存會話令牌。 – Town 2011-05-09 16:30:07

+0

那麼,這意味着使用Response.Redirect來傳遞session變量是不安全的? Response.Redirect使用false參數傳遞會話變量是否安全? – George2 2011-05-09 16:41:17

2

的Response.Redirect會殺死你的會議,所以它不一定會提供b.aspx。相反,請嘗試使用Response.Redirect("/b.aspx", false);,其中false參數確保不立即終止響應。

+0

「Response.Redirect會殺死你的會話,所以它不一定可用」 - 你有任何文件可以參考嗎? – George2 2011-05-09 16:21:17

+0

我試過了,似乎行爲是隨機的,有時它會丟失,有時它不會,任何想法? – George2 2011-05-09 16:24:56

+1

'Redirect'方法調用'ThreadAbortException'如下所述:http://msdn.microsoft.com/en-us/library/t9dwyts4%28v=VS.80%29.aspx你的意思是你已經嘗試使用'False'參數? – keyboardP 2011-05-09 16:25:18

0

我的問題如下: -

問題:當我們搬到ASP.NET應用程序到另一臺服務器(在Windows Server 2008 R2)與IIS 7.5,應用程序不能移動頁面之間的會話值。例如會話值已在第一頁中設置,但無法移至下一頁。在下一頁中,同一個會話變量的值爲NULL。

對於Google Chrome和Firefox,會話值已移至下一頁,但未在Internet Explorer中。

分辨率:我們已經創建了網址名稱以「_」(下劃線)

其他可能的解決方案:

  1. 使用Response.Redirect具有第二個參數爲「假」,以避免頁面執行從而避免丟失會話令牌。你必須使用URL如下。 Response.Redirect(「NextPage.aspx」,false)

  2. 如果該站點的應用程序池配置爲Web場或Web園(通過將工作進程的最大數量設置爲多個),以及如果您沒有使用會話服務或SQL會話,傳入的請求將不可預知地轉到其中一個工作進程,並且如果它不是會話創建的進程,則會丟失。如果您不需要性能提升,或者使用某個進程外會話提供程序,則此問題的解決方案不是使用Web園。

0

響應。重定向(url,false)函數將改變會話如果url絕對url如果你不想鬆散會話使用絕對路徑代替。

相關問題