Доступ к данным сеанса из настраиваемого RouteHandler?

Я опираюсь на пример, найденный здесь:

http://www.mikesdotnetting.com/Article/126/ASP.NET-MVC-Prevent-Image-Leeching-with-a-Custom-RouteHandler

Сейчас я хотел бы иметь некоторую логику, которая проверяет определенные данные в сеансе, прежде чем разрешить отображение действительного изображения. Можно ли получить доступ к данным сеанса из настраиваемого RouteHandler или любого другого типа постоянных данных?


person Brian David Berman    schedule 26.06.2010    source источник


Ответы (2)


У вас есть доступ к сеансу прямо из requestContext:

private static void ProcessRequest(RequestContext requestContext)
{
   var session = requestContext.HttpContext.Session;
person John Farrell    schedule 26.06.2010
comment
Я получал ноль. Хм. Я попробую еще раз. Спасибо. - person Brian David Berman; 26.06.2010
comment
Этот подход сработал? Я всегда получаю значение null при попытке доступа к пользовательскому обработчику маршрута - person Macros; 11.01.2012
comment
У меня есть настраиваемый обработчик маршрута в веб-формах, и доступ к сеансу в настраиваемом обработчике маршрута всегда возвращает null. я думаю, что ProcessRequestmethod принадлежит IHttpHandler - person Muhammad Adeel Zahid; 14.03.2012

Я опубликовал решение этой проблемы в качестве ответа на другой вопрос.

Просмотрите обзор жизненного цикла приложения (https://msdn.microsoft.com/en-us/library/bb470252(v=vs.140).aspx), в частности строка Запрос обрабатывается конвейером HttpApplication. в таблица Этапы жизненного цикла.

В то время как функция GetHttpHandler вашего IRouteHandler объекта вызывается на этапе 10 (вызывает событие MapRequestHandler.) Конвейера, Сессия восстанавливается на этапе 12 < / strong> (Вызывает событие AcquireRequestState.). Вот почему вы не можете получить доступ к переменным сеанса во время функции GetHttpHandler, а RequestContext.HttpContext.Session всегда null.

person Jan Kukacka    schedule 08.02.2015