2013-10-03 91 views
0

我正在創建電影票預訂項目。我想從第1頁獲取用戶名和(使用會話變量)在第2頁顯示它我的會話變量始終爲空

第1頁:

string uname = TextBox1.Text; 
Session["UName"] = uname; 
Session.Timeout = 30; 

第2頁:

if ((string)Session["UName"] != null) 
     { 
      string user = (string)Session["UName"]; 
     } 

和我放在一個標誌了在第2頁按鈕刪除會話變量值。但會話變量始終爲空。 我已經在page1中使用了cookies,這會是一個原因嗎?還是還有什麼?請幫忙。提前致謝。

+1

你用masterpages:相反,你應該根據system.web部分指定在web.config會話超時? –

+0

TextBox1.Text實際上有一個值嗎?請過去更多代碼.... –

+0

您是否過早地刪除了第2頁上的'會話'?檢查您正在使用的清除會話的功能是否被意外觸發。 – Kami

回答

1

這通常發生在設置會話變量後執行Response.Redirect時。您可以解決此問題通過調用過載,而不是:

Response.Redirect("...", false); // false = don't stop execution 

//causes ASP.NET to bypass all events and filtering in the HTTP pipeline 
//chain of execution and directly execute the EndRequest event 
HttpContext.Current.ApplicationInstance.CompleteRequest(); 

根本的問題是ThreadAbortException這是經常被忽略,因爲它不會破壞應用程序。這是一個已知問題,您可以在此處瞭解更多信息:http://support.microsoft.com/kb/312629

旁註

在一個側面說明,你不應該在這樣的代碼重置Session.Timeout值。我無法確定,但這也可能會對您的邏輯產生不利影響。

<sessionState timeout="60" /> 
+0

我已經試過了,但沒有工作。我很長時間以來一直在努力解決這個問題。 – user2842987

+1

@ user2842987:你可以發佈更多的代碼嗎? –

+0

@JamesJohnson這實際上對我有用。感謝:D –