更改现有Cookie的值

时间:2018-01-22 09:02:08

标签: c# asp.net-mvc cookies

我正在尝试修改我的cookie的值,但它不会修改而是附加。我做错了什么?

目前,SkillId Cookie包含112个值,我想用我的变量qualifyBySkill中的任何内容更新其值。

string qualifyBySkill = "189";
HttpCookie cookie = Request.Cookies["SkillId"];
if (cookie != null)
{
    cookie.Values["SkillId"] = qualifyBySkill;
}
cookie.Expires = DateTime.UtcNow.AddDays(1);
Response.Cookies.Add(cookie);

在此代码之后,它会设置112& SkillId = 189而不是189中的值。我做错了什么?

1 个答案:

答案 0 :(得分:1)

在考虑Cookie时,记住Cookie仅由浏​​览器创建并由浏览器存储是有帮助的。它们不会在浏览器和服务器之间来回传递。

Request.Cookies包含浏览器发送的cookie标头列表,通知服务器存在一个Cookie子集;它们不是真正的cookie,实际上缺少普通cookie记录中包含的大部分信息(例如域和路径)。

Response.Cookies仅包含 set-cookie 标头,要求浏览器创建Cookie。此列表通常为空。

要更改浏览器上的cookie,服务器必须设置新的cookie标头。重要的一个词是new

string qualifyBySkill = "189";
var cookie = new HttpCookie("SkillId", qualifyBySkill);
cookie.Expires = DateTime.UtcNow.AddDays(1);
Response.Cookies.Add(cookie);