WebApi 中使用 Session
Posted tony_zhu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebApi 中使用 Session相关的知识,希望对你有一定的参考价值。
1. 在 Global.asax.cs 文件中加入session支持
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) { //启用 webapi 支持session 会话 HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required); }
2.在 WebApiConfig.cs 中设置 路由session 传递
public static void Register(HttpConfiguration config) { RouteTable.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ).RouteHandler = new SessionControllerRouteHandler(); } 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); } }
3. 在web,config 中设置跨域配值
<httpProtocol> <customHeaders> <add name="Access-Control-Allow-Credentials" value="true" />
//设置 前端ip地址 <add name="Access-Control-Allow-Origin" value="http://localhost:8080" /> <add name="Access-Control-Allow-Headers" value="Content-Type" /> <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> </customHeaders> </httpProtocol>
以上是关于WebApi 中使用 Session的主要内容,如果未能解决你的问题,请参考以下文章