溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Web API 開啟Session支持

發(fā)布時(shí)間:2020-05-29 12:23:36 來(lái)源:網(wǎng)絡(luò) 閱讀:3661 作者:helicon80 欄目:編程語(yǔ)言

    Web API中默認(rèn)是沒有開啟Session支持的,開啟Session支持,需要進(jìn)行以下操作,以下操作分兩種,都是在Global.asax文件中添加代碼的。

  • 這時(shí)要在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請(qǐng)求
/// </summary>
/// <returns></returns>
private bool isWebAPiRequest()
{   
    //根據(jù)應(yīng)用程序根的虛擬路徑來(lái)判斷是否是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);
    }
}

    同時(shí)在WebAPI中測(cè)試Session的寫入是否正確時(shí),要注意Session的寫入和讀取要用同樣的瀏覽器或工具,我在測(cè)試的過程中,就犯了個(gè)低級(jí)錯(cuò)誤,Session有寫入,但是一直獲取不到,就因?yàn)槲沂峭ㄟ^瀏覽器進(jìn)行登錄測(cè)試寫Session的,卻在PostMan中去獲取Session,卻一直獲取不到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI