2015-10-05 3 views
1

Согласно MSDN CookieContainer.SetCookies долженCookieContainer.SetCookies устанавливает только первый

экземпляры Добавляет Cookie для одного или несколько печенья из HTTP- печенье заголовка к CookieContainer для конкретного URI

который подразумевает, что он должен работать для нескольких файлов cookie, но когда я делаю

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

и более поздние попытки чтобы получить печенье с помощью

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

я получаю только одну запись печенья, которая 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.String

Содержимое заголовка HTTP-файла cookie, возвращаемого HTTP-сервером, с экземплярами Cookie, разделенными запятыми.

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

омг ... как же я скучаю, что ... ТНХ лол – Steve

+0

@Steve Случается всем каждый раз в то время :-) – Kapol

+0

Любая идея, почему это запятая, хотя HTTP-заголовок использует точки с запятой? – usr

0

Вы используете точку с запятой, чтобы разграничить куки, но MSDN docs состояние:

SetCookies тянет все HTTP-куки из заголовка куки HTTP, строит Cookie для каждого из них, а затем добавляет каждое Cookie к внутреннему CookieCollection, который связан с URI. HTTP-файлы cookie в файле cookieHeader должны быть разделены запятыми.

(курсив добавлен)