Модификация подразделов cookie в C # - PullRequest
0 голосов
/ 13 октября 2018

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

Я пытаюсь создать cookie, в котором хранятся имя и фамилия пользователя.Если пользователь возвращается и меняет либо имя, либо второе имя, он должен изменить эти подразделы в файле cookie userName.Эта часть, кажется, не работает, хотя?

protected void btnContinue_Click(object sender, EventArgs e)
    {
        if (IsValid)
        {
            HttpCookie cookie = new HttpCookie("userName");
            if (cookie != null)
            {
                Response.Cookies.Remove("userName");
                cookie.Values["firstName"] = txtFirstName.Text;
                cookie.Values["lastName"] = txtLastName.Text;
            }
            else
            {
                cookie.Values["firstName"] = txtFirstName.Text;
                cookie.Values["lastName"] = txtLastName.Text;

            }
            cookie.Expires = DateTime.Now.AddMinutes(5);
            Response.Cookies.Add(cookie);

        }
        Response.Redirect("~/Order.aspx");
    }

1 Ответ

0 голосов
/ 14 октября 2018

Путь к delete куки в клиентском браузере заключается в override их, устанавливая значение expires в дату в прошлом.

Когда вы используете этот код:

Response.Cookies.Remove("userName");

вы только удаляете куки на сервере, что означает, что они не отправлены клиенту.Это означает, что старый cookie на клиенте сохраняется.

Чтобы удалить старый cookie:

    HttpCookie cookie = new HttpCookie("olduserName");
    cookie.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(cookie);

Здесь 'oldusername' содержит предыдущее значение 'username'.

Редактировать :

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

Edit2 :

Я действительно сделал ту же ошибку, что и вы, вы должны использовать:

Response.Cookies.Set(cookie);

При использовании Add может быть более одного Cookie с тем же именем.Скорее всего, это ваша проблема (извините, я раньше этого не видел).

Edit2 :

Только что увидел эту строку сейчас:

Response.Redirect("~/Order.aspx");

Вы перенаправляете!Тогда куки не будут установлены на клиенте.

Вместо этого вы должны установить куки в "~ / Order.aspx".

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