. net cookie不断返回,过期时间为0
本文关键字:过期 时间 返回 cookie net | 更新日期: 2023-09-27 17:52:54
我遇到了。expires cookie属性的问题。当我读取cookie返回时,它一直返回01/01/0001 12:00 AM。
下面是代码。我在save下面添加了检索,只是为了调试目的。保存和检索发生在同一文件的不同位置。我故意没有指定域名,因为我希望cookie在全站范围内存在。
数据显示得很好,只是没有过期。
注意:我正在使用。net Framework 4在本地主机上运行的Visual Studio 2012下进行测试。
System.Web.UI.Page oPage = this.Page;
HttpCookie oCookie = new HttpCookie("UserData");
// Set the cookie value.
oCookie.Secure = false;
oCookie["Field1"] = strField1;
oCookie["Field2"] = strField2;
oCookie.Expires = DateTime.Now.AddDays(1);
// Add the cookie.
oPage.Response.Cookies.Add(oCookie);
// Get the cookie.
oCookie = new HttpCookie("UserData");
oCookie = oPage.Request.Cookies["UserData"];
浏览器将不会向服务器发送除cookie名称和值以外的任何内容。所有其他属性(expires, domain, path, httponly,…)都不能在cookie设置后的请求中检索。
处理此问题的更普遍的方法是,当用户试图访问受保护的资源时,将用户重定向到登录页面,并显示一些"您需要登录以查看此页面"之类的消息。如果您以前登录过,则您的会话可能已经过期。"
(还要注意,您应该在每个请求时重新设置cookie,以便用户在继续使用该站点时不会被注销。从您的代码中不清楚您是否正在这样做。
我只是在做更多的谷歌搜索我的问题,看到这个链接,另一个张贴在这里Stackoverflow
cookie总是过期的
我还使用结构进行验证:
if (cookie != null && cookie.Expires > DateTime.Now)...
正如一些人指出的那样,如果不能再检索cookie,就会进行过期检查。无论是谁建造了这个体系结构,这都是非常愚蠢的。是的,也许应该有RequestCookie和ResponseCookie,区别在于ResponseCookie没有到期日期。
回复我的人告诉我,不仅仅是过期,其他字段也一样。
在c#代码中,如果使用表单认证,您可以使用下面的代码
来查找cookie是否持久bool IsCookiePersistent = ((FormsIdentity)User.Identity).Ticket.IsPersistent;
这里Ticket
将返回具有Expiration
DateTime属性的FormsAuthenticationTicket
。