我的Session变量始终为null

时间:2013-10-03 14:12:41

标签: c# asp.net

我正在创建一个电影票预订项目。我想从page1获取用户名并在第2页上显示(使用会话变量)

第1页:

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

2页:

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

我在第2页放了一个注销按钮来删除会话变量值。但是session变量始终为null。 我已经在页面1中使用了cookie,这是一个原因吗?或者还有什么?请帮忙。提前谢谢。

3 个答案:

答案 0 :(得分:1)

当Session可以为null时,请参阅此答案:

What should I do if the current ASP.NET session is null?

当我使用具有完成回调的异步请求时,我个人经常遇到此问题。在这些回调中,我想在会话中设置一些东西,它是空的。

答案 1 :(得分: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值。我无法确定,但这可能会对您的逻辑产生负面影响。相反,您应该在web.config部分下的system.web指定会话超时:

<sessionState timeout="60"  />

答案 2 :(得分:0)

我也有同样的问题, 我在调试localhost上的两个不同站点之间切换,并且会话ID有两个cookie。

我通过Chrome的开发者工具删除了Cookie [在浏览器中按F12] - &gt;应用程序 - &gt;存储 - &gt; Cookie