C# Cookie未更新
我正在尝试更新cookie值,但它不起作用-我尝试过的所有操作都不会更新cookie,而且我总是得到cookie的初始值 因此,我已经搜索了,根据MSDN,我应该能够通过执行以下操作来更新cookie:C# Cookie未更新,c#,cookies,C#,Cookies,我正在尝试更新cookie值,但它不起作用-我尝试过的所有操作都不会更新cookie,而且我总是得到cookie的初始值 因此,我已经搜索了,根据MSDN,我应该能够通过执行以下操作来更新cookie: HttpCookie cookie = new HttpCookie("cookiename"); cookie.Value = cookieValue; cookie.Expires = DateTime.Now.AddDays(30); HttpContext.Current.Respons
HttpCookie cookie = new HttpCookie("cookiename");
cookie.Value = cookieValue;
cookie.Expires = DateTime.Now.AddDays(30);
HttpContext.Current.Response.Cookies.Set(cookie); // also just tried using .Add again here
由于这不起作用,我做了另一次搜索,SO上的人说我应该可以这样做:
HttpContext.Current.Response.Cookies["cookiename"].Value = cookieValue;
HttpContext.Current.Response.Cookies["cookiename"].Expires = DateTime.Now.AddDays(30);
但这也不起作用,所以我尝试删除cookie并重新添加它:
HttpCookie cookie = new HttpCookie("cookiename");
cookie.Value = cookieValue;
cookie.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(cookie);
cookie.Expires = DateTime.Now.AddDays(30);
HttpContext.Current.Response.Cookies.Add(cookie);
在重新添加cookie之前,我还尝试使用以下内容删除cookie
ResponseCookies.Remove("cookiename");
这也不起作用,所以我现在不知道还有什么可以尝试。有人知道如何用c#更新cookie吗
更新
如果我在更新代码后单步检查代码并选中
HttpContext.Current.Request.Cookies[“cookiename”].Value
,它会显示新的值。如果我随后回收应用程序池,以便再次从文件中读取cookie,它将显示原始值,因此上面的代码似乎没有更新物理cookie,您不能强>
根据,您已将当前cookie替换为具有相同名称的新cookie。关于这一点,有整整一节
修改和删除Cookies
不能直接修改cookie。相反,更改cookie包括创建新cookie
使用新值,然后将cookie发送到浏览器以
覆盖客户端上的旧版本
更新 在写下评论后,我们在这里发现了问题 根据声明,您也不允许在cookie值中使用分号 此字符串是一个字符序列,不包括分号,逗号 和空白。如果需要将此类数据放在名称或 值,某些编码方法(如URL样式%XX编码)无效 建议使用,但未定义或要求编码
我面临着类似的问题。如果要解决此问题,请使用以下方法设置并获取cookies
public static void SetCookie(string key, string value, TimeSpan expires, bool http = false)
{
if (HttpContext.Current.Request.Cookies[key] != null)
{
var cookieOld = new HttpCookie(key);
cookieOld.Expires = DateTime.Now.Add(expires);
cookieOld.Value = value;
HttpContext.Current.Response.Cookies.Add(cookieOld);
}
else
{
HttpCookie encodedCookie = new HttpCookie(key, value);
encodedCookie.Expires = DateTime.Now.Add(expires);
HttpContext.Current.Response.Cookies.Add(encodedCookie);
}
}
下面的代码用于获取cookie
public static string GetCookie(string key)
{
string value = string.Empty;
HttpCookie cookie = HttpContext.Current.Request.Cookies[key];
if (cookie != null)
{
value = cookie.Value;
}
return value;
}
下面是调用get和set函数的方法
public static string CustomerName
{
get { return CookieStore.GetCookie("customername"); }
set { CookieStore.SetCookie("customername", value.ToString(), TimeSpan.FromHours(24), true); }
}
尝试删除cookie,然后使用新值添加回cookie。看看这是否有效。是ajax请求吗?@MihirSolanki,不是ajax请求-否则我会使用
$.cookie
,因为这样效果更好-它实际上会更新cookie!无法直接更新物理cookie,因为cookie位于用户的计算机上。丢弃cookie是浏览器的责任。我已经阅读了整个部分,并尝试了该部分所说的内容(正如我在问题中所做的尝试所示)@Pete您是否尝试更改新cookie的过期日期?@Pete您正在测试的浏览器是哪一个?@Pete或您的cookieValue
包含代码>?最后!:我和这个小家伙打了很多架。