c# webapi無法獲取Session值問題解決
阿新 • • 發佈:2021-11-22
在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的內容了,去重新嘗試一下吧!