С# HttpClient не будет добавлять файлы cookie из CookieContainer в запрос

Файлы cookie из CookieContainer не добавляются в запросы Get или Post. Другие заголовки работают без проблем. Как правильно добавлять файлы cookie? Я делал это раньше без проблем, но я не могу найти здесь ошибку.

var cookieContainer = new CookieContainer();

var handler = new HttpClientHandler();
handler.AllowAutoRedirect = true;
handler.UseCookies = true;
handler.CookieContainer = cookieContainer;

var baseAddress = new Uri("https://www.example.se");
cookieContainer.Add(baseAddress, new Cookie("Testing", "Test"));    
//This did not work either
//cookieContainer.Add(baseAddress, new Cookie("Testing", "Test", "/"));     

using (var client = new HttpClient(new LoggingHandler(handler)))
    {
        client.BaseAddress = baseAddress;
        client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36");
        client.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
        client.DefaultRequestHeaders.Add("Accept-Language", "sv-SE,sv;q=0.8,en-US;q=0.6,en;q=0.4");

        var getResponse = client.GetAsync("/test").Result;

        string responseString = getResponse.Content.ReadAsStringAsync().Result;
    }

LoggingHandler: https://stackoverflow.com/a/18925296/3850405

введите здесь описание изображения


person Ogglas    schedule 07.04.2017    source источник
comment
Можете ли вы попробовать перегрузку Cookie ctor, которая также принимает путь в качестве третьего параметра, а затем добавляет /test в качестве пути, а затем повторяет попытку, чтобы увидеть, действительно ли это приводит к ожидаемому результату. Если это сработает, мы можем вернуться, чтобы заставить его работать так, как вы изначально надеялись,   -  person rene    schedule 07.04.2017


Ответы (1)


По какой-то причине файлы cookie не находятся в заголовках HttpRequestMessage при использовании CookieContainer. Если бы я проверил свой объект CookieContainer, они были бы там.

var cookieList = new List<Cookie>();

foreach (Cookie cookie in cookieContainer.GetCookies(baseAddress))
{
    cookieList.Add(cookie);
}
person Ogglas    schedule 07.04.2017