我需要获取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);
}
有谁能告诉我我做错了什么?
答案 0 :(得分: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);
答案 1 :(得分:0)
这个问题已经很久了,但我前一段时间遇到过这个问题。正如@argaz解释的那样,由于您正在更新Response中的值,因此您无法从另一个对象(Request)获取它。在下一个回发中,值将从“请求”传输到“响应”。
因此,如果您的cookie存储的数据仅对当前会话AND有效 你不能等到回发发生,然后实现一个假(因为根据特殊情况从同一刚刚更新的响应读取cookie值或强制回发到同一页面),考虑使用Session对象,这不依赖于回发。 / p>