Asp.net mvc Cookie过期日期始终为1/1/0001
说明: 我在mvc项目中使用cookie来记住用户选择的最新下载格式。在创建cookie时,我正在设置cookie的到期日期。当我试图得到那个曲奇和那个曲奇的有效期时,我总是得到“1/1/0001”作为有效期。我不明白这背后的原因。请解释一下这背后的原因 代码: 1) 设置cookie及其到期日期: 2) 获取cookie及其到期日期: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的过期日期和 时间
上述变量的有效期始终为“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”