gpt4 book ai didi

ASP.NET Cookie 更新值而不更新过期时间?

转载 作者:行者123 更新时间:2023-12-02 18:42:18 25 4
gpt4 key购买 nike

是否可以更新 ASP.NET cookies 值而不必更新过期时间?我发现如果我尝试更新 Cookie 而不更新过期时间,则该 Cookie 将不再存在。我有以下代码,我正在尝试修改。如果每次更新 cookie 值时都会过期,那么过期还有什么意义呢?

        HttpCookie cookie = HttpContext.Current.Request.Cookies[constantCookie];

if (cookie == null)
cookie = new HttpCookie(constantCookie);

cookie.Expires = DateTime.Now.AddYears(1);
cookie.Value = openClose;
HttpContext.Current.Response.Cookies.Set(cookie);

最佳答案

ASP.NET HttpCookie 类无法在从 HTTP 请求读取 cookie 时初始化 Expires 属性(因为 HTTP 规范甚至不要求客户端首先将 Expiration 值发送到服务器)。如果您在将 cookie 设置回 HTTP 响应之前没有设置 Expires 属性,那么它会将其转换为 session cookie,而不是持久性 cookie。

如果您确实必须保留过期日期,则可以将初始过期日期设置为 cookie 值的一部分,然后当您读入 cookie 时,解析该值并设置新的过期日期以匹配。

一个不包含任何其他数据的示例,因此 cookie 并没有真正的帮助——您必须以某种方式使用您想要存储的实际数据对其进行序列化:

HttpCookie cookie = HttpContext.Current.Request.Cookies[constantCookie];
DateTime expires = DateTime.Now.AddYears(1);

if (cookie == null) {
cookie = new HttpCookie(constantCookie);
} else {
// cookie.Value would have to be deserialized if it had real data
expires = DateTime.Parse(cookie.Value);
}

cookie.Expires = expires;
// save the original expiration back to the cookie value; if you want to store
// more than just that piece of data, you would have to serialize this with the
// actual data to store
cookie.Value = expires.ToString();

HttpContext.Current.Response.Cookies.Set(cookie);

关于ASP.NET Cookie 更新值而不更新过期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2693731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com