c# webapi无法获取Session值问题解决
在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的内容了,去重新尝试一下吧!