ASP.NET MVC RC2 - ошибка обработки сеанса? - PullRequest
0 голосов
/ 10 марта 2010

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

4 голосов
/ 10 марта 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...