【发布时间】:2017-06-06 07:28:45
【问题描述】:
我想在我的 ASP.Net 项目中使用 cookie。我这样设置的 cookie:
HttpCookie cookie = new HttpCookie(name);
cookie.Expires = DateTime.Now.AddYears(1);
cookie.Value = data;
HttpContext.Current.Response.Cookies.Set(cookie)
得到:
var cookieCollection = HttpContext.Current.Request.Cookies;
var cookie = cookieCollection[name].Value;
当我更新 cookie 时,我基本上只是做一个获取,修改有问题的属性,然后设置。现在,我注意到当我更新一个 cookie 时,.Net 会在 cookieCollection 中添加一个同名的新 cookie,并将旧的设置为过期:
cookieCollection[0]
{System.Web.HttpCookie}
Domain: null
Expires: {01-01-0001 00:00:00}
HasKeys: false
HttpOnly: false
Name: "myCookieUc"
Path: "/"
Secure: false
Shareable: false
Value: "{...}"
Values: {...}
cookieCollection[1]
{System.Web.HttpCookie}
Domain: null
Expires: {21-01-2018 11:00:10}
HasKeys: false
HttpOnly: false
Name: "myCookieUc"
Path: "/"
Secure: false
Shareable: false
Value: "{...}"
Values: {...}
因此,在我最初设置和更新我的 cookie 后,我的 cookieCollection 中将有两个 cookie。因此,当我尝试获取时:
var cookie = cookieCollection[name].Value;
然后由于某种原因,我似乎得到了已经过期的cookie。
.Net 中的 cookie 更新由 Ajax 调用触发。它可能会在同一个 .Net 方法中多次更新 cookie。
所以我的问题是,当我这样做时:
var cookie = cookieCollection[name].Value;
为什么它给我过期的cookie?我可以改为使用 Linq 来获取未过期的 cookie 吗?
【问题讨论】: