导致" WinHttpException的原因:服务器返回了无效或无法识别的响应"在HttpClient?

时间:2018-03-12 14:50:01

标签: 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服务器之间的通信中断?

1 个答案:

答案 0 :(得分:0)

在进行了一些挖掘后,我能够通过将Bugzilla 更新到5.0.4解决此问题。

ROOT原因:

通过使用Curl,我能够从Http响应(here)手动检查标头。异常是由响应中的噪音引起的:

Bugzilla.pm:sysread()已弃用:utf8句柄。这将是Perl 5.30中C:/ ...

的致命错误

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

<强> SOLUTION:

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

希望这对那里的人有帮助!