Web API中默认是没有开启Session支持的,开启Session支持,需要进行以下操作,以下操作分两种,都是在Global.asax文件中添加代码的。

这时要在Global.asax里添加如下代码,开启Session功能(重写Init方法)

///<summary>///开启WebAPI中的Session支持///</summary>publicoverridevoidInit(){this.PostAuthenticateRequest+=(sender,e)=>HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);base.Init();}

添加以下代码,判断如果是WebAPI的话,则打开Session功能

///<summary>///判断是否是WebAPI请求///</summary>///<returns></returns>privateboolisWebAPiRequest(){//根据应用程序根的虚拟路径来判断是否是API程序returnHttpContext.Current.Request.AppRelativeCurrentExecutionFilePath.ToLower().StartsWith(WebApiExecutePath);}///<summary>///如果是API,则打开Session///</summary>protectedvoidApplication_PostAuthorizeRequest(){if(isWebAPiRequest()){HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required);}}

同时在WebAPI中测试Session的写入是否正确时,要注意Session的写入和读取要用同样的浏览器或工具,我在测试的过程中,就犯了个低级错误,Session有写入,但是一直获取不到,就因为我是通过浏览器进行登录测试写Session的,却在PostMan中去获取Session,却一直获取不到。