我有一个ActionFilterAttribute需要从请求中获取cookie值。这是相关代码:
List<CookieState> cookies = actionContext.Request.Headers.GetCookies("NameOfTheCookieIWant").FirstOrDefault().Cookies.ToList();
if (cookies == null)
{
throw new ArgumentNullException("cookie");
}
string value = "";
cookies.ForEach(cookie => {
if (cookie.Name == "NameOfTheCookieIWant") {
value = cookie.Value;
}
});
所以我必须进入标题并获取包含我想要的cookie名称的cookie标题。但这给了我一个CookieHeaderValues的集合,所以我必须采取其中的第一个,它本身包含一个Cookie属性,它是CookieStates的集合。我将此集合转换为列表并在其上运行forEach,直到找到名称与我想要的cookie名称相匹配的CookieState,然后保存该CookieState的值。
我觉得我需要经历这么多只是为了获得一个cookie值。当然,有一个更好,更直接的方式来获得一个特定的cookie,我知道它的名字及其价值?
答案 0 :(得分:3)
cookie = actionContext.Request.Headers.GetCookies("NameOfTheCookieIWant").FirstOrDefault();
if (cookie != null)
{
string val = cookie["NameOfTheCookieIWant"].Value;
}
答案 1 :(得分:2)
var cookie = actionContext.RequestContext.HttpContext.Request.Cookies["NameOfTheCookieIWant"];
var value = cookie == null ? "" : cookie.Value
答案 2 :(得分:0)
我想写一个包装类或实用函数来获取cookie值,特别是如果你不得不一遍又一遍地这样做。