有一个更好的方法来获得一个cookie值在ActionFilterAttribute
本文关键字:一个 cookie ActionFilterAttribute 值在 更好 方法 有一个 | 更新日期: 2023-09-27 18:04:54
我有一个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;
}
});
所以我必须进入header并获得包含我想要的cookie名称的cookie header。但这给了我一个CookieHeaderValues的集合,所以我必须取第一个,它本身包含一个cookie属性它是一个CookieStates的集合。我将这个集合转换为一个列表,并对其运行forEach,直到找到名称与我想要的cookie名称匹配的CookieState,然后保存该CookieState的值。
对我来说,我需要经历这么多,只是为了得到一个cookie值,这似乎很疯狂。肯定有更好、更直接的方法来获取我知道名字的特定cookie及其值吧?
cookie = actionContext.Request.Headers.GetCookies("NameOfTheCookieIWant").FirstOrDefault();
if (cookie != null)
{
string val = cookie["NameOfTheCookieIWant"].Value;
}
var cookie = actionContext.RequestContext.HttpContext.Request.Cookies["NameOfTheCookieIWant"];
var value = cookie == null ? "" : cookie.Value
我建议编写一个包装器类或实用程序函数来获取cookie值特别是如果你必须反复执行此操作