响应cookie未更新

时间:2015-09-14 20:58:01

标签: c# asp.net cookies

当我记录时,我创建以下cookie:

[]

当我从此cookie请求数据时,我使用Request.Cookies:

HttpCookie cookie = new HttpCookie("Ortund");
// insert cookie values
cookie.Expires = DateTime.Now.AddMonths(1);
Response.Cookies.Add(cookie);

当我退出时,我这样做:

string username = Convert.ToString(Request.Cookies["Ortund"]["Username"]);

出于某种原因,现在我坐在 Request.Cookies [" Ortund"] 中的有效期为HttpCookie cookie = new HttpCookie("Ortund"); cookie.Expires = DateTime.Now.AddMonths(-1); Response.Cookies.Add(cookie); 的Cookie中无论我登录多少次,cookie的失效日期都不会改变。

我在这里做错了吗?这甚至接近它应该如何做?

1 个答案:

答案 0 :(得分:0)

在您的注销中,您正在创建cookie的新实例。您还使用Response.Cookies.Add,这可能允许将多个同名的Cookie附加到Response

我建议您检查Request是否有Cookie密钥,如果不存在则添加Cookie。

要更新Cookie,请先获取现有Cookie对象,然后使用Response.SetCookie更新该值。

<强>代码

<强> 设置

if(!Request.Cookies.AllKeys.Contains("Ortund"))
{
     HttpCookie cookie = new HttpCookie("Ortund");
     // insert cookie values
     cookie.Expires = DateTime.Now.AddMonths(1);
     Response.Cookies.Add(cookie);
}  

<强> 更新

if (Request.Cookies.AllKeys.Contains("Ortund"))
{
     HttpCookie cookie = Request.Cookies["Ortund"];
     cookie.Expires = DateTime.Now.AddMonths(-1);
     Response.SetCookie(cookie);
}