3

我需要获取 cookie 的值并更新它。我一定是做错了什么,因为我的 cookie 没有更新。这是我的代码:

if (HttpContext.Current.Request.Cookies.AllKeys.Contains(EconnectConstants.FILE_SHARE_DOCUMENTS))
{
  var existingCookie = HttpContext.Current.Request.Cookies[EconnectConstants.FILE_SHARE_DOCUMENTS];
  existingCookie.Value = encriptedInput;
  existingCookie.Expires = DateTime.Now.AddMonths(1);
  HttpContext.Current.Response.Cookies.Set(existingCookie);
}
else
{
  var cookie = new HttpCookie(EconnectConstants.FILE_SHARE_DOCUMENTS, encriptedInput);
  cookie.Expires = DateTime.Now.AddMonths(1);
  cookie.Value = encriptedInput;
  HttpContext.Current.Response.Cookies.Add(cookie);
}  

谁能告诉我我做错了什么?

4

2 回答 2

2

这个问题很老了,但我前段时间遇到过这个问题。正如@argaz 解释的那样,由于您正在更新响应中的值,因此您无法从另一个对象(请求)中获取它。值在下一次回发中从请求传输到响应。

因此,如果您的 cookie 存储的数据仅对当前会话有效,并且您不能等待回发发生,那么请实施假的(因为根据特殊条件从刚刚更新的 Response 中读取 cookie 值或强制回发到同一页面),考虑使用 Session 对象,它不依赖于回发。

于 2017-03-03T21:44:06.850 回答
1

这似乎很可疑:

HttpContext.Current.Request.Cookies.Set(existingCookie);

您正在更改请求对象的属性,它不应影响响应(这会影响用户存储的内容)。


您可能可以删除if并执行以下操作:

HttpContext.Current.Request.Cookies[EconnectConstants.FILE_SHARE_DOCUMENTS].Value = encriptedInput;
HttpContext.Current.Request.Cookies[EconnectConstants.FILE_SHARE_DOCUMENTS].Expires = DateTime.Now.AddMonths(1);
于 2013-10-09T18:15:13.647 回答