Asp.net
.Net Web API - GetCookie() 返回空集合
我嘗試
ApiController在後端 Web API 中讀取語言 cookie(我在客戶端上設置),如下所示:var cookieHeaderValue = Request.Headers.GetCookies("lang").FirstOrDefault();我的請求標頭如下所示:
也行
Request.Headers.GetCookies();返回一個空集合…有人可以告訴我為什麼以及我可以做些什麼嗎?請幫忙
CookieHeaderValue 的解析會因為 ‘?’ 而失敗 在您的身份驗證 cookie 名稱中。嘗試刪除問號。
這是一種“完全手動”且非常醜陋的cookie提取方法:
/// <summary> /// Retrieves an individual cookie from the cookies collection /// </summary> /// <param name="request"></param> /// <param name="cookieName"></param> /// <returns></returns> public static string GetCookie(HttpRequestMessage request, string cookieName) { //var vHeaders = request.Headers; //foreach (var vHeader in vHeaders) // System.Diagnostics.Debug.WriteLine(vHeader.Key + " - " + vHeader.Value); var vCookies = request.Headers.Where(H => H.Key.ToLower() == "cookie"); if (vCookies != null) { var vArrCookie = vCookies.FirstOrDefault().Value; if (vArrCookie != null) { var vCookiePair = vArrCookie.FirstOrDefault().Split(new char[] { ';' }).Where(C => C.Trim().StartsWith(cookieName)).FirstOrDefault(); if (vCookiePair != null) { //System.Diagnostics.Debug.WriteLine(vCookiePair); var vCookie = vCookiePair.Trim().Substring(cookieName.Length + 1); return vCookie; } } } // DID NOT WORK //CookieHeaderValue cookie = request.Headers.GetCookies(cookieName).FirstOrDefault(); //if (cookie != null) // return cookie[cookieName].Value; return null; }將此方法添加到對 Web Api 控制器可見的基類或庫類中。
希望這會為您節省一些時間。
乾杯。
