Каков наилучший способ обновления файла cookie, который был установлен по предыдущему запросу в ASP.NET? - PullRequest
1 голос
/ 01 апреля 2011

Вот сценарий. Файл cookie с ключом "MyCookie" был установлен по предыдущему запросу. Я могу получить к нему доступ через HttpContext.Request.Cookies.Get("MyCookie"). Я хочу выполнить обновление, например добавить еще одно значение в коллекцию «Значения cookie», но я не уверен на 100%, правильно ли я это делаю.

Правильно ли я делаю это в следующем примере?

   public static void UpdateCookie(HttpContext context, string cookieName, Action<HttpCookie> updateCookie){
        var cookie = context.Request.Cookies.Get(cookieName);
        updateCookie(cookie);
        context.Response.Cookies.Set(cookie);
   }

1 Ответ

1 голос
/ 10 апреля 2011

Чтобы обновить куки, вам нужно только установить куки снова, используя новые значения.Обратите внимание, что вы должны включить все данные, которые хотите сохранить, поскольку новый файл cookie заменит ранее установленный файл cookie.Я собираюсь предположить, что ваша реализация updateCookie () делает именно это.

В противном случае ваша общая предпосылка верна.Вот реализация, которую я использовал много раз, чтобы сделать это.(Примечание: _page является ссылкой на текущую страницу):

/// <summary> 
/// Update the cookie, with expiration time a given amount of time from now.
/// </summary>
public void UpdateCookie(List<KeyValuePair<string, string>> cookieItems, TimeSpan? cookieLife)
{
    HttpCookie cookie = _page.Request.Cookies[COOKIE_NAME] ?? new HttpCookie(COOKIE_NAME);

    foreach (KeyValuePair<string, string> cookieItem in cookieItems)
    {
        cookie.Values[cookieItem.Key] = cookieItem.Value;
    }

    if (cookieLife.HasValue)
    {
        cookie.Expires = DateTime.Now.Add(cookieLife.Value);
    } 
    _page.Response.Cookies.Set(cookie);
}
...