Когда я могу получить доступ к SESSION в течение жизненного цикла страницы ASP.NET MVC? - PullRequest
7 голосов
/ 10 ноября 2009

Мой вопрос по сути такой же, как вопрос 765054 в StackOverflow. Я только спрашиваю это снова, потому что принятый ответ неверен (вы не можете получить доступ к объекту сеанса в Application_BeginRequest).

Наш вариант использования заключается в том, что мы хотим сохранить пользовательский объект аутентифицированного пользователя в сеансе. Таким образом, в последующих запросах мы можем правильно установить IPrincipal и IIdentity на основе объекта пользователя в сеансе.

Ответы [ 2 ]

4 голосов
/ 03 октября 2013

Видимо AcquireRequestState - самое раннее событие, когда HttpContext.Current.Session не является нулевым Я просто прикрепил их все по порядку и проверил. Я предпочитаю использовать PreRequestHandlerExecute, который происходит до вызова конструктора на моем контроллере.

Это уместно, если вы предпочитаете использовать свой код в Global.asax или ссылаться на него. См. Эту страницу для последовательного списка событий в жизненном цикле приложения: http://msdn.microsoft.com/en-us/library/ms178473%28v=vs.100%29.aspx

3 голосов
/ 10 ноября 2009

Я делаю подобные вещи, используя базовый контроллер и переопределяя OnActionExecuting. Является ли это самым ранним, это может быть сделано или нет, я не знаю, но я знаю, что это произойдет до того, как ваше действие будет выполнено (и, следовательно, до того, как представление будет отображено). В качестве альтернативы вы можете захотеть иметь собственный атрибут авторизации, который делает то, что вы хотите. Это может быть единственным способом убедиться, что это сделано до запуска других атрибутов.

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