2010-03-10 67 views
0

我在我的web應用程序(asp.net mvc rc2)中遇到了會話問題。該應用程序在asp.net mvc rc1上正常工作。ASP.NET MVC RC2 - 會話處理錯誤?

我使用後續代碼會話超時處理:

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; 
        } 
      }  
     } 

當i變爲會話超時,使用FormsAuthentication.SignOut();方法用於用戶註銷一個重定向到loginpage。 新登錄後是cnt.Current.Session.IsNewSession永遠是真的! (BUG?) 在rc1上工作正常。

+0

你在卡西尼或IIS上測試嗎?它在cassini中不起作用,但可用於IIS – chugh97 2011-06-16 15:42:33

回答

4

MVC 2 RC1有一個錯誤,爲每個用戶錯誤地創建一個新的會話。正確的行爲(MVC 2 RC2所展示的)是會話生成被推遲到第一次存儲在用戶會話中的時候。

如果您從不在Session中存儲任何內容,那麼它將永遠不會被保存,並且IsNewSession將始終返回true。如果您打算使用它,請確保您實際上將某些內容放入Session中。

在相關說明中,如果您只是使用它來控制用戶何時註銷,爲何不縮短FormsAuth Cookie到期時間?默認超時時間爲2880分鐘(2天);您可以在網站的根Web.config中更改此設置。這樣你就不必混淆Session。