Используя оба httpbin и Postman Echo (которые, по сути, являются одной и той же службой), я могу успешно получить ответ gzip'd с их конечной точкой тестирования, такой какэто:
var cli = new HttpClient(new HttpClientHandler
{
AutomaticDecompression = DecompressionMethods.GZip
});
await cli.GetAsync("https://postman-echo.com/gzip");
Но если я сделаю эквивалент с их конечной точкой тестирования дефляции:
var cli = new HttpClient(new HttpClientHandler
{
AutomaticDecompression = DecompressionMethods.Deflate
});
await cli.GetAsync("https://postman-echo.com/deflate");
Я получу следующие исключения / внутренние исключения, выданные из System.Net.Http.HttpContent.LoadIntoBufferAsync
:
----> System.Net.Http.HttpRequestException : Error while copying content to a stream.
----> System.IO.IOException : The read operation failed, see inner exception.
----> System.Net.Http.WinHttpException : Operation aborted
Я могу воспроизводить как в .NET Core, так и в .NET Framework. Обратите внимание, что оба они отлично работают в браузере:
https://postman -echo.com / gzip
https://postman -echo.com / deflate
Соблазнительно думать, что это ошибка службы тестирования, но поскольку браузеры справляются с ней хорошо, как и библиотеки на других платформах (их набор тестов обширный, но они не .NET, ребята)Я действительно не уверен, какой путь указывать пальцем. Что именно говорит это исключение?