Я схожу с ума. Я могу написать в файл cookie, а затем прочитать его снова. Но в какой-то момент я хочу обновить значение, которое оно имеет. Всякий раз, когда я получаю cookie снова, я получаю начальное значение, а не обновленное. Ниже приведен код, который я использую для записи/обновления и чтения файла 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.");
}
GetUserSettings
всегда возвращает значение, из которого был создан файл cookie. Что не так?
EDIT:
Я попытался вызвать WriteCookie непосредственно из метода в контроллере. Теперь печенье было установлено. Обычно я называю WriteCookie через запрос Ajax. Теперь, действительно ли мне нужно писать cookie с помощью JavaScript, или я могу как-то просто сделать это с помощью WriteCookie?
Спасибо!