以下是该方案。已在先前的请求中设置了具有键"MyCookie"
的Cookie。我可以通过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);
}
答案 0 :(得分: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);
}