工作不C#
问题描述:
我设置一个cookie,像这样的Cookie有效期:工作不C#
protected void SetCookie(bool value, int expiration)
{
var cookie = Response.Cookies[COOKIE_NAME] ?? new HttpCookie(COOKIE_NAME);
cookie.Value = value.ToString();
cookie.Expires = DateTime.UtcNow.AddDays(expiration);
Response.Cookies.Set(cookie);
}
在SetCookie函数,当我检查的最后一行的饼干,过期设置为明天的日期。
然而,当我检索下一个页面加载这个cookie:
var cookie = Request.Cookies[COOKIE_NAME];
cookie的存在,但到期日期是1/1/0001 12:00:00 AM
答
默认的日期值我相信期满是一个客户端边的东西。浏览器应发送任何未过期的cookie,但不发送过期日期(仅限名称和值)。我认为您应该重新设置并刷新每个请求的到期日期。
这是第一格式参考,我发现:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cookie
如果您需要检索过期数据服务器端不管是什么原因,我将它包含在cookie内容或设置一个二级cookie来保存这些信息。
参照您的第一个代码块:您应该从Request.Cookies中读取/检索Cookie,而不是响应。 – Igor
@Igor我认为它实际上并不重要,因为无论如何都会覆盖属性。正如所写的,我认为如果'SetCookie'被多次调用,它就会重用cookie对象。就个人而言,我会完全移除支票并始终初始化一个新实例。 – ryachza
您是否检查过更改过期日期的客户端代码,因为Cookie可能会在客户端进行更改,可能会导致此问题。 – vivek