Подтвердить что ты не робот

Когда использовать Request.Cookies через Response.Cookies?

Я использую ответ, когда на событии страницы (например, нагрузка), так как это ответ от ASP.NET, и запрашивать при нажатии кнопки, поскольку это ответ на ASP.NET для обработки? Или есть еще что-нибудь?

4b9b3361

Ответ 1

Это две разные вещи: одна SAVES [Ответ], другая READS [Запрос]

в Cookie (говорящие информатики):) вы сохраняете небольшой файл за период времени, который содержит объект типа string

в .NET framework вы сохраняете файл cookie:

HttpCookie myCookie = new HttpCookie("MyTestCookie");
DateTime now = DateTime.Now;

// Set the cookie value.
myCookie.Value = now.ToString();
// Set the cookie expiration date.
myCookie.Expires = now.AddMinutes(1);

// Add the cookie.
Response.Cookies.Add(myCookie);

Response.Write("<p> The cookie has been written.");

Вы написали файл cookie, который будет доступен в течение одной минуты... обычно мы делаем now.AddMonth(1), чтобы вы могли сохранить cookie в течение одного целого месяца.

Чтобы извлечь файл cookie, вы используете запрос (вы запрашиваете), например:

HttpCookie myCookie = new HttpCookie("MyTestCookie");
myCookie = Request.Cookies["MyTestCookie"];

// Read the cookie information and display it.
if (myCookie != null)
   Response.Write("<p>"+ myCookie.Name + "<p>"+ myCookie.Value);
else
   Response.Write("not found");

Помните:

Чтобы удалить куки файл, нет прямого кода, трюк - Сохранить то же имя файла cookie с датой истечения, которая уже прошла, например now.AddMinutes(-1 )

это приведет к удалению файла cookie.

Как вы можете видеть, каждый раз, когда истекает время жизни файла cookie, этот файл автоматически удаляется из системы.

Ответ 2

В веб-приложении запрос - это то, что исходит от браузера, и ответ - это то, что сервер отправляет обратно. При проверке файлов cookie или файлов cookie из браузера вы должны использовать Request.Cookies. Когда вы создаете файлы cookie для отправки в браузер, вам нужно добавить их в Response.Cookies.

Ответ 3

При написании файла cookie используйте Response, но чтение может зависеть от вашей ситуации. Обычно вы читаете "Запрос", но если ваше приложение пытается получить только что написанный или обновленный файл cookie, и в оба конца в браузер не произошло, вам может потребоваться прочитать его в форме "Ответ".

Я использую этот шаблон некоторое время, и он хорошо работает для меня.

public void WriteCookie(string name, string value)
{
    var cookie = new HttpCookie(name, value);
    HttpContext.Current.Response.Cookies.Set(cookie);
}


public string ReadCookie(string name)
{
    if (HttpContext.Current.Response.Cookies.AllKeys.Contains(name))
    {
        var cookie = HttpContext.Current.Response.Cookies[name];
        return cookie.Value;
    }

    if (HttpContext.Current.Request.Cookies.AllKeys.Contains(name))
    {
        var cookie = HttpContext.Current.Request.Cookies[name];
        return cookie.Value;
    }

    return null;
}

Ответ 4

Файлы cookie поступают из браузера в коллекции Request.Cookies. Вот где вы читаете куки файлы, которые были отправлены.

Чтобы отправить файлы cookie обратно в браузер, вы поместите их в коллекцию Response.Cookies.

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

Ответ 5

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

Ответ 6

Код Andrew предоставил ошибку в методе "AllKeys.Contains". Поэтому я немного поправил..

public void WriteCookie(string strCookieName, string strCookieValue)
    {
        var hcCookie = new HttpCookie(strCookieName, strCookieValue);
        HttpContext.Current.Response.Cookies.Set(hcCookie);
    }


    public string ReadCookie(string strCookieName)
    {    
        foreach (string strCookie in HttpContext.Current.Response.Cookies.AllKeys)
        {
            if (strCookie == strCookieName)
            {
                return HttpContext.Current.Response.Cookies[strCookie].Value;
            }
        }         

        foreach (string strCookie in HttpContext.Current.Request.Cookies.AllKeys)
        {
            if (strCookie == strCookieName)
            {
                return HttpContext.Current.Request.Cookies[strCookie].Value;
            }
        }

        return null;
    }