Попробуй так:
var response = HttpContext.Current.Response;
response.Cookies.Remove("UserSettings");
response.Cookies.Add(cookie);
Но я подозреваю, что ваша настоящая проблема заключается в том, что вы вызываете метод WriteCookie
и метод GetUserSettings
в одном и том же HTTP-запросе, который не работает так, как вы думаете или ожидаете.
WriteCookie
записывает cookie в Response , чтобы он был доступен для последующих запросов , но GetUserSettings
считывает cookie из Request вы получаете значение cookie, которое было изначально установлено при запуске этого запроса, что, конечно, является старым значением. Поэтому после вызова WriteCookie
для обновления значения файла cookie пользовательских настроек выполните перенаправление и только при последующем запросе используйте метод GetUserSettings
.
Также в ASP.NET MVC вы, как правило, не хотите использовать статический объект HttpContext.Current
, а используете абстракции, которые предоставляет вам эта среда. Я знаю, что вы написали эти 2 метода как статические, но вы должны были написать их как метод расширения для объекта HttpContextBase
, например. Таким образом, вы могли бы вызывать их в любом месте, где у вас был экземпляр этого абстрактного базового класса, который ASP.NET MVC предоставляет вам во многих общих местах во время жизни HTTP-запроса.