2017-06-08 50 views
1

我设置一个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

+1

参照您的第一个代码块:您应该从Request.Cookies中读取/检索Cookie,而不是响应。 – Igor

+0

@Igor我认为它实际上并不重要,因为无论如何都会覆盖属性。正如所写的,我认为如果'SetCookie'被多次调用,它就会重用cookie对象。就个人而言,我会完全移除支票并始终初始化一个新实例。 – ryachza

+0

您是否检查过更改过期日期的客户端代码,因为Cookie可能会在客户端进行更改,可能会导致此问题。 – vivek

回答

0

默认的日期值我相信期满是一个客户端边的东西。浏览器应发送任何未过期的cookie,但不发送过期日期(仅限名称和值)。我认为您应该重新设置并刷新每个请求的到期日期。

这是第一格式参考,我发现:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cookie

如果您需要检索过期数据服务器端不管是什么原因,我将它包含在cookie内容或设置一个二级cookie来保存这些信息。