zoukankan      html  css  js  c++  java
  • MVC4 WebApi开发中如果想支持Session请做好如下几个方面的问题

    1、在WebApiConfig中建立建立HttpControllerHandler和HttpControllerRouteHandler 并覆写它

    复制代码
     public class SessionRouteHandler : HttpControllerHandler,IRequiresSessionState
            {
                public SessionRouteHandler(RouteData routeData)
                    : base(routeData)
                {
                }
            }
            public class SessionControllerRouteHandler : HttpControllerRouteHandler
            {
                protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
                {
                    return new SessionRouteHandler(requestContext.RouteData);
                }
            }
    复制代码

    Routes.MapHttpRoute要修改为下面的格式:

    复制代码
     public static void Register(HttpConfiguration config)
            {
                RouteTable.Routes.MapHttpRoute(
                    name: "DefaultApi",
                    routeTemplate: "api/{controller}/{action}/{id}",
                    defaults: new { id = RouteParameter.Optional }
                ).RouteHandler = new SessionControllerRouteHandler();
            }
    复制代码

    2、在MVC的WebApi中默认是没有开启Session会话支持的。需要在Global中重写Init方法来指定会话需要支持的类型

    复制代码
            public override void Init()
            {
                PostAuthenticateRequest += MvcApplication_PostAuthenticateRequest;
                base.Init();
            }
    
            void MvcApplication_PostAuthenticateRequest(object sender, EventArgs e)
            {
                HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);
            }
    复制代码
  • 相关阅读:
    Linux学习
    PHP语法笔记
    iOS二次发育(swift)闭包
    iOS二次发育(swift)类
    iOS二次发育(swift)结构体
    iOS二次发育(swift)枚举
    【NOIP2013模拟联考14】隐藏指令
    【NOIP2012模拟8.9】逐个击破
    NOIP2020.9.19模拟patrick
    NOIP2020.9.19模拟 spongebob
  • 原文地址:https://www.cnblogs.com/lenther2002/p/4820171.html
Copyright © 2011-2022 走看看