我试图在我的 IRouteHandler 类的 GettHttpHandler 方法中启用 Session,但 session 始终为空。有人可以告诉我我做错了什么吗?
在 global.asax 我有
RouteTable.Routes.Add("All", new Route("{*page}", new MyRouteHandler()));
Session 为 null 的 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...)的层次结构组成,可以正常发布或预览。浏览该站点的内容制作者可以选择只查看普通页面或者也可以查看那些发布以供预览的页面。浏览模式存储在用户的会话中,因此路由处理程序需要知道浏览模式才能解决请求的页面。
所以我真的需要那个阶段的会议。