我在.Net Core中使用此代码。我们意识到Core现在不适合我们,所以我一直在重构.Net 4.5.2并且当我打电话时
HttpResponseMessage response = await client.GetAsync(passedlURI);
它只是无限期地继续思考。我已将其指向我的API的本地主机版本并确认API正在读取标头并正确返回我的数据,我使用Postman确认实时API和localhost API都向我发送了正确的数据。到目前为止,这是我的代码:
答案 0 :(得分:5)
请务必在每个.ConfigureAwait(false)
中使用await
。在内部等待当前同步上下文的任务上同步等待是ASP.NET中一个众所周知的死锁原因。
例如,而不是:
await GetAPIAsync();
执行:
await GetAPIAsync().ConfigureAwait(false);
当然,如果你没有在任务开始时同步等待,那就更好了。
ASP.NET Core上不会发生此问题,因为它没有使用自定义同步上下文。