有人知道我如何转换Request.Cookies
进入List<HttpCookie>
?以下代码不起作用,因为它引发了异常。
List<HttpCookie> lstCookies = new List<HttpCookie>(
Request.Cookies.Cast<HttpCookie>());
异常:无法将“System.String”类型的对象转换为“System.Web.HttpCookie”类型
最佳答案
发生这种情况的原因是 NameObjectCollectionBase
Request.Cookies
派生的类型枚举集合的键而不是值。因此,当您枚举 Request.Cookies
集合时,您将获得 key :
public virtual IEnumerator GetEnumerator()
{
return new NameObjectKeysEnumerator(this);
}
这意味着以下内容将起作用:
string[] keys = Request.Cookies.Cast<string>().ToArray();
我想你可以尝试以下可能被认为丑陋但有效的方法:
List<HttpCookie> lstCookies = Request.Cookies.Keys.Cast<string>()
.Select(x => Request.Cookies[x]).ToList();
<小时/>
更新:
正如 @Jon Benedicto 在评论部分和 his answer 中指出的那样使用 AllKeys
属性更为优化,因为它可以保存转换:
List<HttpCookie> lstCookies = Request.Cookies.AllKeys
.Select(x => Request.Cookies[x]).ToList();
关于.net - 如何将 Cookie 集合转换为通用列表?容易地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2922762/