“await HTTPClient.GetAsync”永远不会完成

时间:2017-04-11 18:33:40

标签: asp.net async-await .net-4.5.2

我在.Net Core中使用此代码。我们意识到Core现在不适合我们,所以我一直在重构.Net 4.5.2并且当我打电话时

HttpResponseMessage response = await client.GetAsync(passedlURI);

它只是无限期地继续思考。我已将其指向我的API的本地主机版本并确认API正在读取标头并正确返回我的数据,我使用Postman确认实时API和localhost API都向我发送了正确的数据。到目前为止,这是我的代码:

enter image description here

1 个答案:

答案 0 :(得分:5)

请务必在每个.ConfigureAwait(false)中使用await。在内部等待当前同步上下文的任务上同步等待是ASP.NET中一个众所周知的死锁原因。

例如,而不是:

await GetAPIAsync();

执行:

await GetAPIAsync().ConfigureAwait(false);

当然,如果你没有在任务开始时同步等待,那就更好了。

ASP.NET Core上不会发生此问题,因为它没有使用自定义同步上下文。