2010-03-10 5 views
0

У меня проблема с сеансом в моем веб-приложении (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; 
        } 
      }  
     } 

, когда я становится тайм-аут сеанса, используйте метод FormsAuthentication.SignOut(); для пользователя выход из системы с переадресацией на LoginPage. после нового входа cnt.Current.Session.IsNewSession всегда верно !! (BUG?) на rc1 работает отлично.

+0

Испытываете ли вы тестирование на Cassini или IIS? Он не работает в cassini, но будет работать на IIS – chugh97

ответ

4

У MVC 2 RC1 была ошибка, которая неправильно создала новый сеанс для каждого пользователя. Правильное поведение (которое демонстрирует MVC 2 RC2) состоит в том, что генерация сеанса откладывается до тех пор, пока в первый раз что-то не будет сохранено в сеансе пользователя.

Если вы никогда ничего не храните в сеансе, это никогда не будет спасено, а IsNewSession всегда вернет true. Пожалуйста, убедитесь, что вы действительно вкладываете что-то в Сессию, если собираетесь использовать ее.

Относительно примечания, если вы просто используете это, чтобы контролировать, когда пользователь выходит из системы, почему бы не просто сократить срок действия файла cookie FormsAuth? Таймаут по умолчанию - 2880 минут (2 дня); вы можете изменить это в корневом веб-сайте сайта. Таким образом, вам вообще не нужно возиться с Session.

Смежные вопросы