WPF 应用程序在 HttpClient PostAsync 方法中无响应或异常退出

WPF App exits without response or exception at HttpClient PostAsync method

我浏览了几个 SO 和论坛 - 花了几个小时尝试我在这些网站上找到的几个 answers/comments。我还是没能解决问题。

注 1:它以前在我的笔记本电脑上工作过——所有进一步的开发都是在一个单独的分支上进行的。原始分支和新分支都不起作用。它适用于我队友的笔记本电脑,但我们仍然无法找出问题所在。

注2:我曾尝试将原始分支重新克隆到一个单独的目录中,但也失败了。同样,我们无法在我队友的系统上重现该问题。

环境 - Windows10,Visual Studio2019,WPF 应用程序(.NET Framework 4.8),C#8

public class SomeClient
{
    private readonly string _host;
    private readonly HttpClient _client;

    public SomeClient(HttpClient client, string host)
    {
        _host = host;
        _client = client;
    }

    public async Task<string> GetResponse(string request)
    {
        HttpContent content = new StringContent(request, Encoding.UTF8, "application/xml");
        HttpResponseMessage body = await _client.PostAsync(_host, content);
        return await body.Content.ReadAsStringAsync().ConfigureAwait(false);
    }
}

调用代码(测试方法)

[TestClass]
public class SomeClientShould
{
    [TestMethod]
    public async Task ReturnResponse()
    {
        string request = "";
        SomeClient client = new SomeClient(new HttpClient(), @"http:\localhost:9888\");
        string response = await client.GetResponse(request);
        Assert.AreEqual("<RESPONSE>Server is Running</RESPONSE>", response);
    }
}

这里我没有发出任何请求,发送一个空字符串,它应该以 Assert 中显示的字符串响应(通过我队友的系统,我的系统上的 Postman 也可以)。

我已经尝试了 ConfigureAwait(false) 的各种组合,也没有阻塞代码 - 它一直是异步的。即使是上面显示的简单测试方法也会在 PostAsync 行之后退出而不执行下一行。 Try-Catch 没有捕捉到任何异常,我遇到了故障。

所以我很傻,首先主机 uri 出错了 - 测试项目中的斜线必须反过来 - “http://localhost:9888/”。所以现在测试 运行。

下一期,在我的项目之间,Microsoft.Bcl.AsyncInterfaces 库的版本不匹配。

不知何故,一个项目引用了最新版本,而另一个却没有?也许问题是在合并原始分支期间出现的——在我和我的队友创建各自的开发分支以进行进一步开发之前。不管怎样,现在可以了。