我正在尝试修改我的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中的值。我做错了什么?
答案 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);