ASP.NET MVC: доступ к данным сеанса в Session_End или в событии непосредственно перед - PullRequest
3 голосов
/ 09 декабря 2010

Я уже видел похожий вопрос к этому, опубликованному здесь . У меня по сути тот же вопрос, но с небольшим поворотом.

Я пытаюсь получить доступ к информации о сеансе из метода Session_End, но HttpContext является нулевым к тому времени, когда я туда попадаю, поэтому я не нахожу никакого реального способа добраться до него; почти как будто оно уже полностью стерто ко времени запуска Session_End.

Решение в связанном вопросе говорит, что я могу использовать this.Session для ссылки на нужную мне информацию о сеансе, которая обращается к переменной HttpApplication.Session из класса HttpApplication, наследуемого от Global. Но в моем приложении мы сами переопределили переменную Session в Global так:

    public new static HttpSessionState Session
    {
        get
        {
            return HttpContext.Current.ApplicationInstance.Session;
        }
    }

Так что, для меня, ссылка на это. Сессия попытается получить информацию из HttpContext, который является нулевым.

Так что я думаю, у меня есть 2 вопроса. Во-первых, происходит ли событие до Session_End, но до очистки данных сеанса? И, во-вторых, если ответ на первый вопрос - нет, есть ли еще способ получить доступ к этим данным из Session_End?

Спасибо.

1 Ответ

0 голосов
/ 07 апреля 2011

имейте в виду, что session_end будет вызываться только в том случае, если вы используете режим состояния сеанса in_proc: если вы развернете свое веб-приложение на фермах серверов, оно не будет поднято. в любом случае, даже если я не знаю, чего вы хотите добиться, лучше обработать конец сеанса в HttpModule. взгляните на ссылку ниже:

http://www.codeproject.com/KB/aspnet/SessionEndStatePersister.aspx

...