Измените значение cookie cookie, которое уже существует
У меня есть cookie под названием SurveyCookie. Создано так:
var cookie = new HttpCookie("SurveyCookie");
cookie.Values["surveyPage"] = "1";
cookie.Values["surveyId"] = "1";
cookie.Values["surveyTitle"] = "Definietly not an NSA Survey....";
cookie.Values["lastVisit"] = DateTime.UtcNow.ToString();
cookie.Expires = DateTime.UtcNow.AddDays(30);
Response.Cookies.Add(cookie);
Это отлично работает. Теперь проблема возникает, когда я хочу изменить значение "surveyPage" так.
Ниже будет создан новый файл cookie, который я не хочу.
int cookieValue = Convert.ToInt32(Request.Cookies["SurveyCookie"]["surveyPage"]) + 1;
Response.Cookies["SurveyCookie"]["surveyPage"] = cookieValue.ToString();
Затем я попробовал этот код, ниже которого тоже не работает. Опросная страница все еще 1, когда она должна быть 2.
Request.Cookies["SurveyCookie"]["surveyPage"] = cookieValue.ToString();
Поскольку ни то, ни другое не работает, что изменит значение cookie для surveyPage?
Ответы
Ответ 1
Из обзора файлов cookie ASP.NET:
Вы не можете напрямую модифицировать файл cookie. Вместо этого, изменение cookie состоит в создании нового файла cookie с новыми значениями и последующей отправке файла cookie в браузер для перезаписывания старой версии на клиенте.
Вы можете попробовать следующее:
HttpCookie cookie = Request.Cookies["SurveyCookie"];
if (cookie == null)
{
// no cookie found, create it
cookie = new HttpCookie("SurveyCookie");
cookie.Values["surveyPage"] = "1";
cookie.Values["surveyId"] = "1";
cookie.Values["surveyTitle"] = "Definietly not an NSA Survey....";
cookie.Values["lastVisit"] = DateTime.UtcNow.ToString();
}
else
{
// update the cookie values
int newSurveyPage = int.Parse(cookie.Values["surveyPage"]) + 1;
cookie.Values["surveyPage"] = newSurveyPage.ToString();
}
// update the expiration timestamp
cookie.Expires = DateTime.UtcNow.AddDays(30);
// overwrite the cookie
Response.Cookies.Add(cookie);
Ответ 2
Проверьте метод Response.SetCookie()
как это установит обновление существующего файла cookie