Web API 開啓Session支持

    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,卻一直獲取不到。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章