CookieContainer.SetCookies只设置第一个

本文关键字:第一个 设置 SetCookies CookieContainer | 更新日期: 2023-09-27 18:16:03

根据MSDN CookieContainer.SetCookies应该

为一个HTTP Cookie中的一个或多个Cookie添加Cookie实例指向CookieContainer的特定URI的header

意味着它应该适用于多个cookie,但是当我这样做时

_cookieContainer.SetCookies(new Uri("http://localhost"), "a=a;b=b");
然后尝试使用 检索cookie
_cookieContainer.GetCookies(new Uri("http://localhost"));

我只得到一个cookie条目a=a

我认为这可能是cookie头格式是错误的,所以我手动添加了两个cookie使用.Add方法,后来尝试通过调用.GetCookieHeader来获得头,我得到完全相同的字符串"a=a;b=b"

我错过了什么还是我只是发现了一个。net bug?我目前正在使用

VS2015 - v14.0.23107.0,
.NET - 4.6 4.6.00081

CookieContainer.SetCookies只设置第一个

您为什么不尝试传递第二个参数的方式与MSDN在SetCookies的文档站点上建议的相同:

cookieHeader

类型:系统。字符串

HTTP服务器返回的HTTP set-cookie报头的内容,其中Cookie实例用逗号分隔。

_cookieContainer.SetCookies(new Uri("http://localhost"), "a=a,b=b");

您正在使用分号来分隔cookie,但是MSDN文档状态为:

SetCookies从HTTP cookie头中提取所有HTTP cookie,为每个cookie构建一个cookie,然后将每个cookie添加到与URI关联的内部CookieCollection中。cookieHeader字符串中的HTTP cookie必须用逗号分隔。

(重点)