将Cookie过期问题设置为DateTime.Max(9999年12月31日)?

时间:2009-05-02 01:16:51

标签: asp.net cookies

我们支持丢弃cookie并将过期时间设置为DateTime.MaxValue的遗留代码:

HttpCookie cookie = new HttpCookie(cookieName, value);
cookie.Expires = DateTime.MaxValue;

似乎在某些浏览器(我们没有记录)上,此cookie会立即过期 - 甚至可能不会被删除。根据MSDN,DateTime.MaxValue是9999年12月31日。在此日期设置cookie到期是否存在与浏览器相关的问题?

正确答案是更改到期日期,但此时我们无法更改生产代码。

1 个答案:

答案 0 :(得分:7)

如果我不得不随机猜出它为什么不起作用,我会说它与Unix epoch time有关。在2038年1月19日格林威治标准时间凌晨3:14:07之后,这个值在技术上会溢出(在32位机器上) - 所以在此之后的下一秒将被解释为格林尼治标准时间1970年1月1日0:00:01。

您提供的未来时间实际上可能会转换为过去的时间。

同样,这是一个完整的猜测,希望我可以在家用机器上下载VWD Express 2008后立即测试。

编辑:

正在搜索此问题,我发现了类似的错误:

http://framework.zend.com/issues/browse/ZF-5690