在 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 已正确更新。
正在努力寻找这个问题的答案。我设置了一个 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 已正确更新。