我对此很感兴趣。我可以写一个cookie,然后再读一遍。但是在某些时候,我想更新它的价值。每当我再次获取cookie时,我都会得到初始值,而不是更新后的值。以下是我用于写入/更新和读取cookie的代码。无法更新ASP.NET中的Cookie
private static HttpCookie WriteCookie(Guid siteId, string siteName)
{
var cookie = HttpContext.Current.Request.Cookies.Get("UserSettings");
if(cookie != null) {
cookie.Value = EncryptObject(new UserSettingsModel { SiteID = siteId, SiteName = siteName });
HttpContext.Current.Response.Cookies.Set(cookie);
}else {
cookie = new HttpCookie("UserSettings") { Path = "/", Expires = DateTime.Now.AddDays(1), Value = EncryptObject(new UserSettingsModel { SiteID = siteId, SiteName = siteName }) };
HttpContext.Current.Response.Cookies.Add(cookie);
}
return cookie;
}
public static UserSettingsModel GetUserSettings(string username = null)
{
var cookie = HttpContext.Current.Request.Cookies.Get("UserSettings");
if (cookie == null || string.IsNullOrEmpty(cookie.Value))
{
cookie = ResetUserSettings();
}
var userSettings = DecryptObject<UserSettingsModel>(cookie.Value);
if (userSettings != null)
{
var siteId = userSettings.SiteID;
var siteName = userSettings.SiteName;
return new UserSettingsModel { SiteID = siteId, SiteName = siteName };
}
throw new SecurityException("You have no site attached to your user. Contact an administrtor.");
}
总是返回cookie最初创建的值。怎么了?
编辑:
我试图直接从一个控制器的方法调用WriteCookie。该cookie现在已设置。我通常通过Ajax请求调用WriteCookie。现在,我是否真的必须使用JavaScript编写cookie,或者我可以用WriteCookie来完成它?
谢谢!
你检查什么是使用招实际发送?特别注意过期和路径。 – Oded
我正在使用Chrome浏览器,并使用集成的开发人员工具,我可以看到cookie值永远不会更新。我不知道为什么 – Andreas
看看请求和响应标题,看看发生了什么。 – Oded