繁体   English   中英

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

[英]WPF App exits without response or exception at HttpClient PostAsync method

我经历了几个 SO 和论坛 - 花了几个小时尝试我在这些网站上找到的几个答案/评论。 我仍然无法解决问题。

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

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

环境 - Windows 10、Visual Studio 2019、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 库的版本不匹配。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM