Tôi sắp xếp các loại hạt này. Tôi có thể viết vào một cookie, và sau đó đọc lại nó. Nhưng tại một số điểm, tôi muốn cập nhật giá trị nó giữ. Bất cứ khi nào tôi nhận được cookie một lần nữa, tôi nhận được giá trị ban đầu, không phải là một cập nhật. Dưới đây là mã tôi sử dụng để viết/cập nhật và đọc cookie.Không thể cập nhật cookie trong ASP.NET
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.");
}
GetUserSettings
luôn trả về giá trị mà cookie được tạo ban đầu. Chuyện gì vậy?
CHỈNH SỬA:
Tôi đã thử gọi WriteCookie trực tiếp từ phương thức trong Bộ điều khiển. Cookie đã được thiết lập. Tôi thường gọi là WriteCookie thông qua một yêu cầu Ajax. Bây giờ, tôi thực sự phải viết cookie bằng cách sử dụng JavaScript, hoặc có thể tôi bằng cách nào đó chỉ cần làm điều đó bằng cách sử dụng WriteCookie?
Cảm ơn!
Bạn đã kiểm tra những gì thực sự được gửi bằng cách sử dụng trình điều khiển không? Nhìn vào hết hạn và đường dẫn cụ thể. – Oded
Tôi đang sử dụng trình duyệt Chrome và sử dụng các công cụ Nhà phát triển tích hợp, tôi có thể thấy rằng giá trị cookie không bao giờ được cập nhật. Tôi tự hỏi tại sao – Andreas
Nhìn vào yêu cầu và tiêu đề phản hồi để xem điều gì đang diễn ra. – Oded