Файлы cookie HttpWebRequest не устанавливаются - PullRequest
5 голосов
/ 22 декабря 2010

Я пытаюсь сделать несколько простых вещей, я уже просмотрел примеры в Интернете, и я не уверен в том, что я делаю неправильно.что потом будут исполнять разные устройстваПо сути, я создаю веб-запрос на свой сайт, который возвращает набор файлов cookie, которые нам понадобятся позже.Затем я хочу создать новый веб-запрос, используя возвращенные файлы cookie из первого ответа, но когда я читаю эту информацию, файлы cookie пусты

var request =   (HttpWebRequest)WebRequest.Create("http://localhost/bla");
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "GET";

request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(originalResponse.Cookies); // originalResponse.Cookies has several cookies needed by "bla"
var response = request.GetResponse();

В другом месте ... (внутри "бла")

HttpContext.Current.Request.Cookies  // this is empty

Ответы [ 2 ]

11 голосов
/ 22 декабря 2010

Хорошо, нашел, что происходит Проблема в том, что мы не можем просто установить контейнер cookie для получения файлов cookie из ответа, поскольку это новый запрос, нам нужно также указать домен, к которому относятся файлы cookie (.net не предполагает, что домен принадлежит URI в объекте запроса)

Итак, нам нужно сделать что-то подобное при установке файлов cookie:

request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(new Uri("http://localhost"), originalResponse.Cookies);

Точно так же, как еще одно замечание, у меня возникла проблема с Путьом при настройке файлов cookie ... возникла ошибка, такая как «Путь = = MyApp часть файла cookie недействительна» Я решил эту проблему, установив путь к файлам cookie, прежде чем добавлять их (и сделать их действительными во всем домене)

   for (int i = 0; i < originalResponse.Cookies.Count; i++)
   {
        originalResponse.Cookies[i].Path = String.Empty;
   }
1 голос
/ 22 декабря 2010

Вы пытались просматривать заголовки запросов напрямую или даже пытались использовать средства проверки HTTP?

Заполнено ли originalResponse.Cookies данными? Является ли домен одинаковым для сбора и исходящего запроса?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...