ASP.NET MVC RC2 - 会话处理错误?

时间:2010-03-10 13:19:12

标签: asp.net-mvc session

我的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上运行正常。

1 个答案:

答案 0 :(得分:4)

MVC 2 RC1有一个错误,错误地为每个用户创建了一个新会话。正确的行为(MVC 2 RC2展示)是会话生成延迟到第一次将某些内容存储在用户的会话中。

如果您从未在Session中存储任何内容,那么它将永远不会被保存,并且IsNewSession将始终返回true。如果你打算使用它,请确保你实际上在Session中放了一些东西。

在相关的说明中,如果您只是用它来控制用户何时注销,为什么不缩短FormsAuth cookie的到期时间呢?默认超时为2880分钟(2天);您可以在站点的根Web.config中更改此设置。这样你根本不必搞乱Session。