您好,登錄后才能下訂單哦!
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,卻一直獲取不到。
免責(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)容。