HttpContext.Current.Session перепутан в Asp.net MVC 3.0 - PullRequest
3 голосов
/ 30 августа 2011

Я работаю с приложением ASP.net MVC3.0 и храню информацию о текущем пользователе в сеансе текущего HttpContext.

Как я знаю, HttpContext.Current предназначен для каждого текущего запроса. Поэтому мойДанные сеанса должны очищаться после нового запроса. Однако я могу получать данные текущего сеанса пользователя данные от запроса к запросу, сохраняя HttpContext.Current.Я сделал этот пример для целей тестирования, чтобы понять управление сеансами в MVC 3.0.

Мой вопрос: Как получить данные сеанса после текущего запроса?Я действительно ценю твою помощь.

public static UserAccountDto CurrentUser
    {
        get
        {
            if (HttpContext.Current == null)
                return null;

            if (HttpContext.Current.Session[CurrentUserSessionVariable] != null)
                return HttpContext.Current.Session[CurrentUserSessionVariable] as UserAccountDto;

            return null;
        }

        private set { HttpContext.Current.Session[CurrentUserSessionVariable] = value; }
    }

Ответы [ 2 ]

4 голосов
/ 30 августа 2011

HttpContext.Current равно не так же, как:

HttpContext.Current.Request

последний отличается при каждом запросе, первый содержит такие элементы, как пользователь, сеанс, сервер и т. Д., Которые во многих (но не во всех) случаях являются одним и тем же запросом после запроса.

1 голос
/ 30 августа 2011

Что вы сделали, так это то, что созданная вами переменная сеанса будет доступна для всех запросов, следующих за тем, который ее создает.HttpContext является одним из крупнейших объектов, которые вы найдете в веб-разработке, и за кулисами делает много вещей.Причина, по которой вы не теряете сеанс между запросами, заключается в том, что сервер будет поддерживать его работу.Вы будете удивлены, узнав, что за сценой сеанс использует определенный раздел кэша

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