Asp.net mvc Cookie过期日期始终为1/1/0001

Asp.net mvc Cookie过期日期始终为1/1/0001,asp.net-mvc,cookies,Asp.net Mvc,Cookies,说明: 我在mvc项目中使用cookie来记住用户选择的最新下载格式。在创建cookie时,我正在设置cookie的到期日期。当我试图得到那个曲奇和那个曲奇的有效期时,我总是得到“1/1/0001”作为有效期。我不明白这背后的原因。请解释一下这背后的原因 代码: 1) 设置cookie及其到期日期: 2) 获取cookie及其到期日期: 上述变量的有效期始终为“1/1/0001”。我引用了MikeSmithDev对一个可能重复的问题的回答: 简短回答-您无法读取cookie的过期日期和 时间

说明:

我在mvc项目中使用cookie来记住用户选择的最新下载格式。在创建cookie时,我正在设置cookie的到期日期。当我试图得到那个曲奇和那个曲奇的有效期时,我总是得到“1/1/0001”作为有效期。我不明白这背后的原因。请解释一下这背后的原因

代码:

1) 设置cookie及其到期日期:

2) 获取cookie及其到期日期:


上述变量的有效期始终为“1/1/0001”。

我引用了MikeSmithDev对一个可能重复的问题的回答:

简短回答-您无法读取cookie的过期日期和 时间

回答稍微长一点-这不是ASP.NET中会话的问题。 这是一个你可以从cookie服务器端读取什么的问题 ASP.NET。根据MSDN:

浏览器负责管理cookie,以及cookie的 过期时间和日期有助于浏览器管理其Cookie存储。 因此,尽管可以读取cookie的名称和值,但是 无法读取cookie的过期日期和时间。当浏览器 将cookie信息发送到服务器,浏览器不包括 过期信息。(cookie的Expires属性总是 返回日期时间值为零。)

您可以读取在中设置的cookie的Expires属性 HttpResponse对象,在cookie发送到浏览器之前。 但是,您无法在HttpRequest对象中获取过期信息。 因此,基本上,cookie过期日期设置正确。这可能是 通过在浏览器中检查cookie进行验证。不幸的是, 像在Get函数中一样读取此cookie将返回1/1/0001

如果你真的想得到有效期,那么你必须把它储存起来 在cookie本身中:

设置

DateTime exp = DateTime.Now.AddDays(1); 
HttpCookie PreferredCookie = new HttpCookie("PreferredCookie"); 
PreferredCookie.Values.Add("cookieType", "Zref"); 
PreferredCookie.Values.Add("exp", exp.ToString());
PreferredCookie.Expires = exp; 
Response.Cookies.Set(PreferredCookie); 
HttpCookie PreferredCookie = Request.Cookies["PreferredCookie"];
if (PreferredCookie != null)
{
  CookieLiteral.Text = "Value = " + PreferredCookie["cookieType"] + "<br>";
  CookieLiteral.Text += "Expires = " + PreferredCookie["exp"];
}
else
{
  CookieLiteral.Text = "No Cookie"; 
}
获取

DateTime exp = DateTime.Now.AddDays(1); 
HttpCookie PreferredCookie = new HttpCookie("PreferredCookie"); 
PreferredCookie.Values.Add("cookieType", "Zref"); 
PreferredCookie.Values.Add("exp", exp.ToString());
PreferredCookie.Expires = exp; 
Response.Cookies.Set(PreferredCookie); 
HttpCookie PreferredCookie = Request.Cookies["PreferredCookie"];
if (PreferredCookie != null)
{
  CookieLiteral.Text = "Value = " + PreferredCookie["cookieType"] + "<br>";
  CookieLiteral.Text += "Expires = " + PreferredCookie["exp"];
}
else
{
  CookieLiteral.Text = "No Cookie"; 
}
HttpCookie PreferredCookie=Request.Cookies[“PreferredCookie”];
if(PreferredCookie!=null)
{
CookieLiteral.Text=“Value=“+PreferredCookie[“cookieType”]+”
”; CookieLiteral.Text+=“Expires=“+PreferredCookie[“exp”]; } 其他的 { CookieLiteral.Text=“无Cookie”; }
如果记录此行返回的值:DateTime.UtcNow.AddDays(Convert.ToInt32(ConfigurationManager.AppSettings[“FileFormatTypeCookieExpire”])?记录的值是正确的到期日期。但当我试图从cookie中获取到期日期时,它总是“1/1/0001”