【发布时间】:2021-03-27 15:43:23
【问题描述】:
我正在尝试实现一个简单的 XML HTTP POST 接口,但不知何故它停止了工作。这是我的代码:
HttpClient _httpClient = new HttpClient();
static void Main(string[] args)
{
Login("", "");
}
public async void Login(string username, string password)
{
var response = await SendXml("<foo>");
}
public async Task<string> SendXml(string xml)
{
var content = new StringContent(xml);
var response = await _httpClient.PostAsync("http://127.0.0.1:8080/Path", content);
var responseBody = await response.Content.ReadAsStringAsync();
return responseBody;
}
我想说很简单,但是在运行时,它只会停在PostAsync。当我在ReadAsStringAsync 处设置断点时,它永远不会被命中。
我没有例外,没有错误。我的服务器说“发送数据时连接中止”。
我一定是在做一些简单的错误,但我找不到它......我必须说await 的东西仍然让我有点困惑。这段代码是一个控制台应用程序,async/await 会导致这里出现问题吗?
【问题讨论】:
-
异步/等待不是问题的原因。您是否尝试过指定超时?您是否在调用代码中的任何位置调用 Task.Result?
-
@Silvermind 这可能不是原因,但是当我删除它并使用
.Result时,它工作正常...... -
不要使用
.Result,因为这会导致死锁。 -
你在使用
[StaThread]吗? -
@Silvermind 控制台应用程序会在收到结果之前结束吗?我将如何等待呢?
标签: c# httpclient