标签: iroutehandler

使用Asp.net路由的IRouteHandler.GetHttpHandler中的会话为空

我正在尝试在我的IRouteHandler类的GettHttpHandler方法中启用Session,但session始终为null.有人能告诉我我做错了什么吗?

在global.asax我有

RouteTable.Routes.Add("All", new Route("{*page}", new MyRouteHandler()));
Run Code Online (Sandbox Code Playgroud)

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我做了一个小测试应用程序来显示问题.

有人能告诉我我做错了什么吗?

编辑添加:

是的,我真的需要路由处理程序中的会话数据.有许多原因,但可以轻松解释的是当用户可以切换到以预览模式浏览网站时.

该站点由数据库中的动态页面层次结构(/ page1/page2 ...)组成,可以正常发布或预览.浏览网站的内容制作者可以选择仅查看普通页面或查看发布到预览的页面.浏览模式存储在用户的会话中,因此路由处理程序需要知道浏览模式才能解析所请求的页面.

所以我真的需要在那个阶段的会议.

asp.net session null routing iroutehandler

5
推荐指数
2
解决办法
2927
查看次数

路由映射到不同路由的参数

我正在尝试为我的ASP.NET MVC 5项目设置一些路由.

现在我有一些奇怪的行为:

  • /Home/About 正确路由
  • /Home/Index 被路由到 /XmlRpc?action=Index&controller=Blog
  • /HOme/Index 工作(是的,我发现由于一个错字) - 我一直认为路由不区分大小写?
  • 使用Url.Action("Foo","Bar")也创造/XmlRpc?action=Foo&controller=Bar

这是我的RouteConfig档案:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.Add("XmlRpc", new Route("XmlRpc", new MetaWeblogRouteHandler()));

    routes.MapRoute("Post", "Post/{year}/{month}/{day}/{id}", new {controller = "Blog", action = "Post"}, new {year = @"\d{4,4}", month = @"\d{1,2}", day = @"\d{1,2}", id = @"(\w+-?)*"});
    routes.MapRoute("Posts on Day", "Post/{year}/{month}/{day}", new {controller = "Blog", action = "PostsOnDay"}, new {year = @"\d{4,4}", month = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc iroutehandler asp.net-mvc-routing xml-rpc.net

4
推荐指数
1
解决办法
356
查看次数