CookieContainer.SetCookies仅设置第一个

时间:2015-10-05 19:46:43

标签: c#

根据MSDN CookieContainer.SetCookies应该

  

从HTTP cookie添加一个或多个Cookie的Cookie实例   标题为CookieContainer的特定URI

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

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

以后尝试使用

检索Cookie
_cookieContainer.GetCookies(new Uri("http://localhost"));

我只获得一个a=a

的Cookie条目

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

我是否遗漏了任何内容,或者我发现了一个.NET错误?我目前正在使用

  

VS2015 - v14.0.23107.0,
  .NET - 4.6 4.6.00081

2 个答案:

答案 0 :(得分:5)

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

  

cookieHeader

     

输入:System.String

     

HTTP服务器返回的HTTP set-cookie标头的内容,Cookie实例由逗号分隔。

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

答案 1 :(得分:0)

您使用分号分隔Cookie,但MSDN docs状态:

  

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

(强调补充)