Я делаю несколько HTTP-запросов к REST API, которые возвращают довольно много данных (около 100 МБ). Теперь я использовал HttpClientFactory
из .Net Core для получения данных, и он отлично работает. Но что меня озадачило, так это несоответствие между моим временем и внутренним временем, которое исходит от самой библиотеки.
Вот пример сообщения из библиотеки:
Завершить обработку HTTP-запроса через 130311,0094 мс — ОК
Дело в том, что действительно требуется еще 20-30 секунд, чтобы действительно загрузить все данные, хотя библиотека написала, что все готово (для выполнения метода client.GetAsync()
).
Я предполагаю, что здесь происходит то, что библиотека очень хочет сообщить сразу после получения заголовка, не дожидаясь загрузки тела.
Это действительно звучит как ошибка, но я не уверен, так ли это. Может быть, у кого-то есть лучшее объяснение, почему это происходит?
P.S. Вот пример моего кода:
Stopwatch watch = new Stopwatch();
watch.Start();
var response = await Client.GetAsync(url);
watch.Stop();
Console.WriteLine($"Elapsed time {watch.ElapsedMilliseconds} ms");
Прошедшее время в моем журнале намного выше, чем в системном сообщении
P.P.S. Я пробовал работать с HttpCompletionOption.ResponseContentRead
, но это действительно не изменило результат, разница все равно большая.
client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
- person Matthew   schedule 15.02.2019