首先创建两个保存会话状态的类:SessionableControlHandler,SessionStateRouteHandler
代码如下
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 using System.Web.Http.WebHost; 2 using System.Web.Routing; 3 using System.Web.SessionState; 4 5 namespace iAssistantAPI.Authentication 6 { 7 public class SessionableControlHandler : HttpControllerHandler, IRequiresSessionState 8 { 9 public SessionableControlHandler(RouteData routeData) 10 : base(routeData) 11 { 12 } 13 } 14 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
using System.Web; using System.Web.Routing; namespace iAssistantAPI.Authentication { public class SessionStateRouteHandler : IRouteHandler { IHttpHandler IRouteHandler.GetHttpHandler(RequestContext requestContext) { return new SessionableControlHandler(requestContext.RouteData); } } }
然后注册自己的 Route
打开RouteConfig,在RegisterRoutes 方法中的代码下,代码如下
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 RouteTable.Routes.MapHttpRoute( 2 name: "DefaultApi", 3 routeTemplate: "api/{controller}/{action}/{id}", 4 defaults: new 5 { 6 id = RouteParameter.Optional 7 } 8 ).RouteHandler = new SessionStateRouteHandler();
此时webapi就可以支持 session 了