Я пытаюсь включить сеанс в методе GettHttpHandler моих классов IRouteHandler, но сеанс всегда равен нулю.Может кто-нибудь сказать мне, что я делаю не так?
В global.asax у меня есть
RouteTable.Routes.Add("All", new Route("{*page}", new MyRouteHandler()));
Класс MyRouteHandler, где Session равен нулю, выглядит так:
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 ...) в базе данных, котораямогут быть опубликованы в обычном режиме или для предварительного просмотра.Производитель контента, просматривающий сайт, может выбрать просмотр только обычных страниц или страниц, опубликованных для предварительного просмотра.Режим просмотра сохраняется в сеансе пользователя, поэтому обработчик маршрута должен знать режим просмотра, чтобы иметь возможность решить запрошенную страницу.
Так что мне действительно нужен сеанс уже на этом этапе.