c# - 是什么导致 HttpClient 中的 "WinHttpException: The server returned an invalid or unrecognized response"?

标签 c# http asp.net-core-2.0

问题:

我正在尝试使用 Bugzilla 的 REST API 从远程 Bugzilla 服务器访问数据。每当我等待来自 HttpClient.GetAsync 的响应时,这 exception被抛出。

我尝试了什么:

为了理解异常,我调查了以下 SO 问题和 GitHub 问题:

核心代码:

下面代码的目的是获取位于 _url_version 的服务器的 Bugzilla 版本。例如,如果我设置 _url_version = "https://bugzilla.mozilla.org/rest/version",我会得到一个有效的 response。 .

// Get version, dummy test to ensure REST API is working via http requests
public async Task<string> GetVersion()
{
    using (var client = new HttpClient())
    {
        HttpResponseMessage response = await client.GetAsync(_url_version);
        string json = await response.Content.ReadAsStringAsync();
        return JsonConvert.DeserializeObject<Rootobject>(json).version;
    }
}

问题:

这个异常是什么意思?什么可能导致我的应用程序和远程 Bugzilla 服务器之间的通信中断?

最佳答案

在做了一些挖掘之后,我能够通过将 Bugzilla 更新到 5.0.4 来解决这个问题。

根本原因:

通过使用 Curl ,我能够手动检查来自 Http 响应 (here) 的 header 。异常是由响应中的噪声引起的:

Bugzilla.pm:sysread() 在 :utf8 句柄上已弃用。这将是位于 C:/... 的 Perl 5.30 中的 fatal error

出于某种原因,perl 模块的这个问题在服务器端得到回应。

解决方案:

根据Bugzilla 5.0.4 release notes ,问题已解决。我更新了我的 Bugzilla 安装,REST API 按预期工作。

希望这对外面的人有帮助!

关于c# - 是什么导致 HttpClient 中的 "WinHttpException: The server returned an invalid or unrecognized response"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49238135/

相关文章:

javascript - 如何从异步 POST 请求返回字符串?

asp.net-core-2.0 - 模型验证 .Net Core 2.0 Web Api 不工作

c# - 安装 Open XML 2.0

sockets - 如何将 HTTPS 流量从 SOCKS 代理转发到 HTTP 代理

php - 使用 PHP 或 HTML 更改 HTTP 请求授权 header

angular - 将 .Net Core Angular 6 发布到 Azure 时出错

c# - 如何将我的 linux (cntose) 服务器上的 ASP.NET MVC 网站主机或该网站代码转换为 ASP.NET Core

c# - 如何将 WorkItemCollection 转换为列表

c# - 是否可以为这种类型的文本编写正则表达式?

c# - 序列化事件