Сеанс является пустым в IRouteHandler. GetHttpHandler с маршрутизацией Asp.net

Я пытаюсь включить Сессию в методе GettHttpHandler моих классов IRouteHandler, но сеанс является всегда пустым. Кто-то мог сказать мне, что я делаю неправильно?

В global.asax я имею

RouteTable.Routes.Add("All", new Route("{*page}", new MyRouteHandler()));

Класс MyRouteHandler, где Сеанс является пустым, похож на это:

public class MyRouteHandler : IRouteHandler, IRequiresSessionState
{
    public System.Web.IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        string test = HttpContext.Current.Session["test"].ToString();
        return BuildManager.CreateInstanceFromVirtualPath("~/Page.aspx", typeof(Page)) as Page;
    }
}

Я сделал маленькое тестовое приложение, которое показывает проблему.

Кто-то мог сказать мне, что я делаю неправильно?

Отредактированный для добавления:

Да, мне действительно нужны данные сессии в обработчике маршрутов. Существует много причин, но одно легко объяснимое - когда пользователь может переключиться для просматривания сайта в режиме предварительного просмотра.

Сайт состоит из иерархии динамических страниц (/page1/page2...) в базе данных, которая может обычно публиковаться или к предварительному просмотру. Производитель содержания, просматривающий сайт, может принять решение просмотреть просто нормальные страницы или также опубликованных к предварительному просмотру. Режим просмотра хранится на сессии пользователя так для этого, обработчик маршрутов должен знать, что режим просмотра может решить требуемую страницу.

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

5
задан Dori 25 April 2011 в 01:22
поделиться

1 ответ

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

Действительно ли вам нужна сессия в самом обработчике маршрута, а не в обработчике, который он выдает?

.
1
ответ дан 13 December 2019 в 22:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: