【问题标题】:HttpClient inconsistency from .Net Framework 4.6.2 to .Net Core 1.1从 .Net Framework 4.6.2 到 .Net Core 1.1 的 HttpClient 不一致
【发布时间】:2017-06-21 21:00:54
【问题描述】:

最近我一直在尝试使用 HttpClient 类,我遇到了一些奇怪的行为:.NET Core 1.1 上的 HttpClient 使用 gzip 和 deflate 自动解压缩响应内容,但 .NET Framework 4.6 上的 HttpClient .2 不是。这是我正在使用的代码:

string url = "http://www.youtube.com";

HttpClient client = new HttpClient();
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.TryAddWithoutValidation("accept-encoding", "gzip, deflate");

var response = await client.GetAsync(url);

Console.WriteLine(await response.Content.ReadAsStringAsync());
Console.Read();

如果此代码在 .NET Framework 上运行,则输出为乱码(预期),但如果在 .NET Core 上运行,则输出为可读的 HTML。

我发现这一点的方法是将上述代码包含在 .NET 标准项目中,然后从 .NET Framework 控制台应用程序和 .NET Core 控制台应用程序中引用它。

据我所知,HttpClient 类通常没有很好的文档,那么哪种行为是正确的?

这是对 .NET Standard 库的潜在重大更改,但似乎 .NET Standard 不能保证这样的默认值,所以这是一个错误还是轻微的平台不一致?

谢谢

【问题讨论】:

标签: c# .net .net-core dotnet-httpclient


【解决方案1】:

这是从 netcoreapp1.1 到 netcoreapp2.0 的重大变化...netcoreapp1.1 没有遵循与 .NET Framework 相同的标准,但它已在 netcoreapp2.0 中得到修复。如果您针对 2.0 进行编译,您应该在 .NET Core 和 .NET Framework 之间观察到相同的行为。

https://github.com/dotnet/corefx/issues/18646#issuecomment-295511967

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 2018-08-03
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    相关资源
    最近更新 更多