如何阻止HttpClient.GetAsync(uri)挂起?

时间:2014-02-24 12:33:08

标签: c# asp.net-web-api async-await

我有以下用于调用uri的代码:

var uri = string.Format("Helpers/ProfileList/Online/?locationId=0&skip=0&take={0}", numProfiles);
HttpResponseMessage response = await client.GetAsync(uri);
response.EnsureSuccessStatusCode();

uri指向一个自定义的web api uri(我可以调试并完成)。但是,当调用api中的最后一个return语句时,似乎什么也没发生。它应该转到response.EnsureSuccessStatusCode();行,但事实并非如此。它似乎悬而未决。

1 个答案:

答案 0 :(得分:11)

我的spidey-sense告诉我,你的调用堆栈会进一步阻止你的代码阻止返回的任务,例如Task.WaitTask<T>.Result。默认情况下,这将是我在博客上解释的cause a deadlock

要解决此问题,请将Task.WaitTask<T>.Result替换为await