2013-10-03 56 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 –