MVC在api控制器中启用Session

MVC在api控制器中启用Session

在api控制器中默认是关闭Session功能的,这时候就需要修改Global.asax文件,重写Init方法和添加WebApiApplication_AuthenticateRequest方法。完成后保存,在api控制器中用HttpContext.Current.Session[“key”](如果没记错的话)调用Session。本人遇到这个问题是在Filter应用中filterContext.HttpContext.Session[“key”],结果发现所得到的Session值为null。

代码块

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;

namespace WebApiCORS
{
    public class WebApiApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }

        public override void Init()
        {

            this.AuthenticateRequest += WebApiApplication_AuthenticateRequest;
            base.Init();
        }


        void WebApiApplication_AuthenticateRequest(object sender, EventArgs e)
        {
        //开启Session
HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_31729917/article/details/80176769