Web APi中启动Session状态

  • A+
所属分类:ASP.NET C# MVC

Web APi中启动Session状态

Web APi全局启动Session

以下皆在Global.asax全局文件中进行。

首先开启Session功能(重写Init方法)

  1. /// <summary>  
  2. /// 开启WebAPI中的Session支持  
  3. /// </summary>  
  4. public override void Init()  
  5. {  
  6.     this.PostAuthenticateRequest += (sender, e) => HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required);  
  7.     base.Init();  
  8. }  

第一步(定义两个变量)

  1. private const string WebApiPrefix = "api";  
  2. private static string WebApiExecutePath = string.Format("~/{0}", WebApiPrefix);  

第二步(获取当前请求的路径)

  1. private bool isWebAPiRequest()  
  2. {  
  3.             return HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath.StartsWith(WebApiExecutePath);  
  4. }  

第三步(若请求Web APi则启动Session)

  1. protected void Application_PostAuthorizeRequest()  
  2. {  
  3.     if (isWebAPiRequest())  
  4.     {  
  5.         HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required);  
  6.     }  
  7. }  

第四步(测试代码)

  1. HttpContext.Current.Session.Add("UserId""1");  
  2. var UserId = HttpContext.Current.Session["UserId"];  
钰玺

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: