1

这是场景。"MyCookie"已在先前的请求中设置了带有密钥的 cookie 。我可以通过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);
   }
4

1 回答 1

1

要更新 cookie,您只需使用新值再次设置 cookie。请注意,您必须包含所有要保留的数据,因为新的 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);
}
于 2011-04-10T04:07:43.360 回答