我正在尝试在IRouteHandler类的GettHttpHandler方法中启用Session,但是session始终为null。请问我做错了什么?
在global.asax中,我有以下代码:
RouteTable.Routes.Add("All", new Route("{*page}", new MyRouteHandler()));
MyRouteHandler类中Session为null的情况如下:
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...)组成,可以正常发布或预览。浏览网站的内容生产者可以选择只查看普通页面还是也查看已发布的预览页面。浏览模式存储在用户的会话中,因此路由处理程序需要知道浏览模式才能解决所请求的页面。
所以我确实需要在那个阶段就使用会话。