在 ASP.NET API 控制器操作中更新 cookie 的到期日期

Updating the expiry date of a cookie in ASP.NET API controller action

正在努力寻找这个问题的答案。我设置了一个 cookie,它基本上允许我跟踪访问者的购物车。设置 cookie 很好,但我找不到更新到期日期的方法,因此每次用户执行与购物车相关的操作时,它都会更新到未来 90 天。我的代码如下。这是有问题的 AddToCart API 方法。

[ActionName("AddToCart")]
[HttpGet]
public HttpResponseMessage AddToCart(int id)
{
    HttpResponseMessage msg = new HttpResponseMessage();
    CookieHeaderValue header = Request.Headers.GetCookies("visitor").FirstOrDefault();
    VisitorViewModel visitor;

    if (header == null)
    {
        visitor = _visitorManager.Create().ToViewModel();
        header = new CookieHeaderValue("visitor", visitor.Cookie);
        header.Expires = DateTime.Now.AddDays(90);
        msg.Headers.AddCookies(new CookieHeaderValue[] { header });
    }
    else
    {
        visitor = _visitorManager.Get(header["visitor"].Value).ToViewModel();
        header.Expires = DateTime.Now.AddDays(90);
        msg.Headers.AddCookies(new CookieHeaderValue[] { header });
    }

    _cartManager.AddToCart(id, visitor.ID);

    return msg;

}

如果用户还没有得到 cookie,它会正确添加 cookie,但如果 cookie 已经存在,我最终会得到第二个 cookie,这正是我根据代码所期望的。只是找不到更新现有客户端 cookie 的方法。

最后还是跟cookie的路径有关。通过确保我在所有设置和检索 cookie 中将路径设置为“/”,cookie 已正确更新。