none
WebForm使用了URL Routing后不能使用Session。 RRS feed

  • 问题

  • 如题,我相信是我的handler的问题,请问,该怎样写,我附上我的。

     

    只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 <configuration>\<system.web>\<httpModules> 节中包括 System.Web.SessionStateMod 或自定义会话状态模块。

    我按这样改了之后还是不行

     

     routes.Add("Pages", new Route("Pages/{ParaDate}/{ParaID}", new RouteValueDictionary(new { }), new RouteValueDictionary(new { ParaDate = "^\\d{8}$", ParaID = "^[0-9]*$" }), new WebFormRouteHandler("~/Home/Pages.aspx")));
    

     

     

    public class WebFormRouteHandler : IRouteHandler, IRequiresSessionState
    {
     string _virtualpath;
     public WebFormRouteHandler(string virtualPath)
     {
     _virtualpath = virtualPath;
     }
    
     public IHttpHandler GetHttpHandler(RequestContext requestContext)
     {
     foreach (var parm in requestContext.RouteData.Values)
      requestContext.HttpContext.Items[parm.Key] = parm.Value;
     var display = BuildManager.CreateInstanceFromVirtualPath(_virtualpath, typeof(Page)) as IHttpHandler;
     return display;
     }
    }
    
    这样写了之后,通过路由访问的页面不能用SESSION,而通过文件访问的却可以。
    

     

    2011年2月10日 16:42

答案