【问题标题】:Response cookie not updating响应 cookie 未更新
【发布时间】:2015-09-14 20:58:01
【问题描述】:

当我登录时,我创建了以下 cookie:

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

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

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

当我退出时,我会这样做:

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

出于某种原因,现在我正在使用 Request.Cookies["Ortund"] 中过期日期为 0001-01-01 12:00:00 AM 的 cookie,而 cookie 的过期日期没有无论我登录多少次都会改变。

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

【问题讨论】:

    标签: c# asp.net cookies


    【解决方案1】:

    在您的注销中,您正在创建一个新的 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);
    }
    

    【讨论】:

      猜你喜欢
      • 2014-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-20
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      相关资源
      最近更新 更多