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

我有以下代码用于调用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(); 线,但事实并非如此。 它似乎挂了。

我的spidey-sense告诉我,你的调用堆栈会进一步阻止你的代码在返回的任务上阻塞,例如, Task.WaitTask.Result 。 默认情况下,这会导致我在博客上解释的死锁 。

要修复它,请用await替换Task.WaitTask.Result Task.Wait