Cookie过期日期不起作用C#

Cookie过期日期不起作用C#,c#,cookies,setcookie,httpcookie,C#,Cookies,Setcookie,Httpcookie,我正在设置一个cookie,如下所示: 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);

我正在设置一个cookie,如下所示:

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时,过期日期设置为明天的日期

但是,当我在下一页加载时检索此cookie时:

var cookie = Request.Cookies[COOKIE_NAME];

cookie存在,但过期日期是默认的日期值
1/1/0001 12:00:00 AM

我相信过期是客户端的事情。浏览器应发送任何未过期的cookie,但不发送过期日期(仅名称和值)。我认为您应该重新设置并刷新每个请求的过期时间

这是我找到的第一个格式参考:


如果出于任何原因需要检索服务器端的过期数据,我会将其包含在cookie内容中,或者设置一个辅助cookie来包含该信息。

我认为过期是客户端的事情。浏览器应发送任何未过期的cookie,但不发送过期日期(仅名称和值)。我认为您应该重新设置并刷新每个请求的过期时间

这是我找到的第一个格式参考:


如果出于任何原因您需要检索过期数据服务器端,我会将其包含在cookie内容中,或设置一个辅助cookie以包含该信息。

关于您的第一个代码块:您应该从
请求中读取/检索cookie。Cookies
,不是响应。@Igor我认为这实际上并不重要,因为属性无论如何都会被覆盖。如前所述,如果多次调用
SetCookie
,我认为这是在重用cookie对象。就我个人而言,我会完全删除该检查并始终初始化一个新实例。您是否检查过任何更改过期日期的客户端代码,因为cookie可能会在客户端更改,这可能是导致问题的原因。关于您的第一个代码块:您应该从
请求中读取/检索cookie。Cookies
,不是响应。@Igor我认为这实际上并不重要,因为属性无论如何都会被覆盖。如前所述,如果多次调用
SetCookie
,我认为这是在重用cookie对象。就我个人而言,我会完全删除检查,并始终初始化一个新实例。您是否检查过任何更改到期日期的客户端代码,因为cookie可以在客户端更改,这可能是导致问题的原因。