Web API中默認是沒有開啓Session支持的,開啓Session支持,需要進行以下操作,以下操作分兩種,都是在Global.asax文件中添加代碼的。
這時要在Global.asax裏添加如下代碼,開啓Session功能(重寫Init方法)
/// <summary> /// 開啓WebAPI中的Session支持 /// </summary> public override void Init() { this.PostAuthenticateRequest += (sender, e) => HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required); base.Init(); }
添加以下代碼,判斷如果是WebAPI的話,則打開Session功能
/// <summary> /// 判斷是否是Web API請求 /// </summary> /// <returns></returns> private bool isWebAPiRequest() { //根據應用程序根的虛擬路徑來判斷是否是API程序 return HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath.ToLower().StartsWith(WebApiExecutePath); } /// <summary> /// 如果是API,則打開Session /// </summary> protected void Application_PostAuthorizeRequest() { if (isWebAPiRequest()) { HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required); } }
同時在WebAPI中測試Session的寫入是否正確時,要注意Session的寫入和讀取要用同樣的瀏覽器或工具,我在測試的過程中,就犯了個低級錯誤,Session有寫入,但是一直獲取不到,就因爲我是通過瀏覽器進行登錄測試寫Session的,卻在PostMan中去獲取Session,卻一直獲取不到。