将 Cookie 添加到 CookieContainer 时,我收到 CookieException,如下所示:
ProxyRequest.CookieContainer = new CookieContainer();
Uri serverUri = new Uri(ServerURL);
foreach (string name in Context.Request.Cookies.AllKeys)
{
var requestCookie = Context.Request.Cookies[name];
ProxyRequest.CookieContainer.Add(new Cookie(requestCookie.Name, requestCookie.Value, "/", serverUri.DnsSafeHost));
}
CookieException 的文档说,当 Cookie 大于 CookieContainer 中的 MaxCookieSize 时,就会发生这种情况;然而,MaxCookieSize 是 4096,而这个 cookie 只有 96 字节长。
4096限制是容器中所有cookie加在一起的限制吗?我收到此异常还有其他原因吗?
例外的消息是:
The 'Value'='84-B2,PX,TT|15-TL|30-T6,TL|23-GA,TL,TT|29-MR|25-CX,GA,TT|31-CX,GA,PX|9-B2,TF,TR|7-B2,CX,PX,TL,TT' part of the cookie is invalid.
您的域可能还有其他 Cookie,每个网站不能存储超过 20 个 Cookie。
通过使用带有子键的单个 cookie,您可以使用分配给您的网站的 20 个 cookie 中的更少。
此外,单个 cookie 占用大约 50 个字符的开销(过期信息等),加上您存储在其中的值的长度,所有这些都计入 4096 字节的限制。如果您存储五个子项而不是五个单独的 cookie,则可以节省单独 cookie 的开销,并且可以节省大约 200 个字节。