我的webapplication中的会话有问题(asp.net mvc rc2)。该应用程序在asp.net mvc rc1上运行正常。
我使用以下代码进行会话超时处理:
if (cnt.Current.Session != null)
{
if (cnt.Current.Session.IsNewSession)
{
string cookie = cnt.Current.Request.Headers["Cookie"];
if ((null != cookie && (cookie.IndexOf("ASP.NET_SessionId") >= 0))
{
return true;
}
}
}
当我成为会话超时时,使用FormsAuthentication.SignOut();
方法进行用户注销,重定向到登录页面。
新登录后cnt.Current.Session.IsNewSession
总是如此! (BUG?)
在rc1上运行正常。
答案 0 :(得分:4)
MVC 2 RC1有一个错误,错误地为每个用户创建了一个新会话。正确的行为(MVC 2 RC2展示)是会话生成延迟到第一次将某些内容存储在用户的会话中。
如果您从未在Session中存储任何内容,那么它将永远不会被保存,并且IsNewSession将始终返回true。如果你打算使用它,请确保你实际上在Session中放了一些东西。
在相关的说明中,如果您只是用它来控制用户何时注销,为什么不缩短FormsAuth cookie的到期时间呢?默认超时为2880分钟(2天);您可以在站点的根Web.config中更改此设置。这样你根本不必搞乱Session。