当前位置:  开发笔记 > 后端 > 正文

ASP.NET cookie到期时间始终为1/1/0001 12:00 AM

如何解决《ASP.NETcookie到期时间始终为1/1/000112:00AM》经验,为你挑选了1个好方法。

我正在使用以下代码设置cookie过期:


// remove existing cookies.
request.Cookies.Clear();
response.Cookies.Clear();

// ... serialize and encrypt my data ...

// now set the cookie.
HttpCookie cookie = new HttpCookie(AuthCookieName, encrypted);
cookie.Expires = DateTime.Now.Add(TimeSpan.FromHours(CookieTimeOutHours));
cookie.HttpOnly = true;
response.Cookies.Add(cookie);

// redirect to different page

当我在另一页读取cookie超时时,我得到1/1/0001 12:00 AM.如果有人可以帮我解决问题,我会很感激.我正在使用ASP.NET 3.5

好.看完Gulzar的链接后,似乎我无法检查cookie.Expires上的HttpRequest根本没有?因为链接似乎暗示cookie.Expires总是设置为DateTime.MinValue,因为服务器永远不知道客户端计算机上的实际时间?所以这意味着我必须自己将时间存储在cookie中并检查它?我的理解是否正确?

谢谢尚卡尔



1> Andy Rose..:

这里的问题并不在于ASP.NET,而在于浏览器在http请求中提供的信息量.无论您在服务器端使用何种平台,都无法获得到期日期.

正如您在问题中总结的那样,HttpRequest对象提供的HttpCookie对象的Expires属性始终设置为1/1/0001 12:00 AM.这是因为当发送请求时,浏览器不会将此到期信息以及域和路径等属性传递给服务器.发送的唯一cookie信息是名称和值.因此,请求中的cookie将具有这些"缺失"字段的默认值,因为它们在服务器端是未知的.

我猜这背后的原因是,cookie的expiry,domain和path属性仅供浏览器在决定是否应该在请求中传递cookie时使用,并且服务器只对名称和值感兴趣.

你周围的工作建议重复到期时间,因为cookie的另一个值是获得你正在寻找的行为的一种方式.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有