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