2015-10-05 54 views
1

根据MSDN CookieContainer.SetCookiesCookieContainer.SetCookies只设置第一个

为一个或多个cookie再添曲奇实例从一个HTTP cookie 头到的CookieContainer特定URI

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

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

以后尝试使用

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

检索饼干我只得到一个cookie的项,这a=a

我想这可能是小甜饼报头格式不对,所以我用.Add方法手动添加了两个饼干,后来试着通过调用.GetCookieHeader来得到标题,我得到完全相同的字符串"a=a;b=b"

我错过了什么,或者我发现了一个.NET错误?我目前使用

VS2015 - v14.0.23107.0,
.NET - 4.6 4.6.00081

回答

3

你为什么不尝试通过第二个参数相同的方式,MSDN建议对SetCookies的文档站点:

cookieHeader

类型:System

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

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

OMG ......我怎么错过...... THX笑 – Steve

+0

@Steve偏偏大家每过一段时间:-) – Kapol

+0

任何想法,为什么它是一个逗号虽然HTTP头使用分号? – usr

0

您使用分号来分隔你的cookies,但MSDN docs状态:

SetCookies翻出所有的HTTP cookies了HTTP cookie头的,建立一个Cookie的每一个,然后将每个Cookie添加到与URI关联的内部CookieCollection。 cookieHeader字符串中的HTTP cookie必须用逗号分隔。

(强调)