4

使用httpbinPostman Echo(这似乎是同一个服务,实际上),我能够成功地通过他们的测试端点获得一个 gzip 的响应,如下所示:

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 人),我真的不确定哪个指向手指的方式。这个异常到底告诉我什么?

4

1 回答 1

0

不知道它是否仍然相关,但这确实是 .net 中的一个错误,最近才在 .net 6 中修复。

于 2021-02-24T08:04:18.977 回答