c# webapi無法獲取Session值問題解決

  在Web項目中,我們想要使用Session時,直接使用以下代碼便可以獲取想要的內容

 

 var sessions=HttpContext.Current.Session ;
 var userSession=sessions[key];

但是,我們在WebApi中直接這樣使用,sessions的值是null的,也就是無法獲取任何session的值,所以我便在此記錄如何解決此問題

step1 :兩個類

 
 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);
        }
    }
 

step2:修改WebApiConfig(在Application_Start方法中增加一下配置)

 //Route上傳遞Session
            RouteTable.Routes.MapHttpRoute(
                name: "DefaultApi1",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }).RouteHandler = new SessionControllerRouteHandler();
 

step3:修改Global.asax

 
 public override void Init()
        {
            PostAuthenticateRequest += (s, e) => HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);
                base.Init();
        }
 

以上配置完成後,你的webapi項目即可獲取session的內容了,去重新嘗試一下吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章