ASP.NET: файлы cookie, значение не сбрасывается, файл cookie не удаляется - PullRequest
0 голосов
/ 07 октября 2010

У меня есть cookie с именем "g" со значениями "y" или "n"

Я установил его так:

Response.Cookies("g").Value = "y"
Response.Cookies("g").Expires = DateTime.Now.AddHours(1)

Я изменил его так:

Request.Cookies("g").Value = "n"

и я пытаюсь уничтожить его вот так

Response.Cookies("g").Expires = DateTime.Now.AddHours(-1)

Печенье настроено нормально, но я не могу изменить его значение или уничтожить

Спасибо!

Ответы [ 2 ]

4 голосов
/ 07 октября 2010

Попробуйте удалить его следующим образом:

if (Request.Cookies["g"] != null)
{
    HttpCookie myCookie = new HttpCookie("g");
    myCookie.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(myCookie);
}

Я думаю, что если вы попытаетесь создать cookie и добавить его в ответ, как это, он должен работать.

Вы хотите добавить вновый файл cookie для ответа с тем же именем.Также я рекомендую вернуться назад на день, а не на час.

Чтобы изменить значение файла cookie, сделайте следующее:

if (Request.Cookies["g"] != null)
{
    HttpCookie myCookie = new HttpCookie("g");
    myCookie.Expires = DateTime.Now.AddHours(1);
    myCookie.Value = "n";
    Response.Cookies.Add(myCookie);
}

Важно отметить, что в этих примерах мынаблюдая коллекцию запросов только для чтения, чтобы увидеть, что там уже есть, а затем мы вносим изменения или удаляем, добавляя новый файл cookie вместо того, который был там ранее.

1 голос
/ 07 октября 2010

Вы не можете изменить файл cookie запроса, вы можете только «переустановить» его в своем ответе. Следовательно, вам нужно установить тот же файл cookie в своем ответе.

Однако трюк Expire должен работать, но иногда DST (летнее время) может запутать браузер. Вы пытались использовать очень старый DateTime (например, 1970), чтобы истечь cookie?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...