【发布时间】:2014-10-31 08:33:39
【问题描述】:
我可以写入和读取 cookie,但我无法更改现有 cookie 的值,它始终具有第一个设置值。我发现了几种实现方法,但没有一种方法有效。这是我的代码:
private void AddPost(string key)
{
var context = System.Web.HttpContext.Current;
var request = context.Request;
var response = context.Response;
var cookie = request.Cookies[Constants.PostsViewing];
if (cookie == null || string.IsNullOrEmpty(cookie.Value))
{
response.Cookies.Add(new HttpCookie(Constants.PostsViewing, key)
{
Expires = DateTime.Now.AddDays(365)
});
}
else
{
if (cookie.Value.Split(';').Contains(key))
{
return;
}
var v = cookie.Value + ";" + key;
cookie.Value = v;
cookie.Expires = DateTime.Now.AddDays(365);
response.Cookies.Add(cookie);
// this way also doesn't work
//cookie.Value = v;
//response.AppendCookie(cookie);
// and this
//response.Cookies[Constants.PostsViewing].Value = v;
//response.Cookies[Constants.PostsViewing].Expires = DateTime.Now.AddDays(365);
}
}
根据msdn cookie 文件应该被改写。
每个 cookie 必须有一个唯一的名称,以便以后从浏览器读取它时可以识别它。由于 cookie 是按名称存储的,因此将两个 cookie 命名为相同会导致其中一个被覆盖。
你知道如何解决它吗?
【问题讨论】:
-
我遇到了完全相同的问题。完全莫名其妙。
标签: c# asp.net-mvc cookies