Сессия не очищается даже после RemoveAll - PullRequest
1 голос
/ 25 мая 2011
        Session.Clear();
        Session.Abandon();
        Session.RemoveAll();

        System.Web.Security.FormsAuthentication.SignOut(); 

Я делаю так много кода

все еще

HttpContext.Current.Session["User"]  is not null

: (

Ответы [ 2 ]

3 голосов
/ 25 мая 2011

Вам не нужно звонить как Clear, так и RemoveAll. Вот как реализовано RemoveAll:

public void RemoveAll()
{
    this.Clear();
}

Также вот цитата из KB 899918 :

Когда веб-приложение требует войти и предлагает страницу выхода или вариант, мы рекомендуем вам очистить состояние сеанса, когда пользователь имеет вышел из веб-сайта. Очистить состояние сеанса, вызовите Сессия. Метод Abandon. Метод Session.Abandon позволяет вам сбросить состояние сеанса без ожидания тайм-аут состояния сеанса. От по умолчанию этот тайм-аут составляет 20 минут скользящее истечение. Это истечение обновляется каждый раз, когда пользователь делает запрос на веб-сайт и представляет файл cookie идентификатора сеанса. Метод Abandon устанавливает флаг в объект состояния сеанса, который указывает что состояние сеанса должно быть отказались. Флаг осматривается и затем действовал в конце страницы запрос. Следовательно, пользователь может использовать объекты сеанса на странице после Вы вызываете метод Abandon. Как только когда обработка страницы завершена, сеанс удален.

0 голосов
/ 25 мая 2011

Попробуйте с session.flush();, который работал для меня. Не уверен, может ли это вам помочь.

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