1

これがシナリオです。キーを持つ Cookie が"MyCookie"以前の要求で設定されています。経由でアクセスできますHttpContext.Request.Cookies.Get("MyCookie")。Cookie Values コレクションに別の値を追加するなどの更新を実行したいのですが、それが正しいかどうか 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 に答える