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

标签 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(); 行,但事实并非如此。它似乎只是挂着。

最佳答案

我的直觉告诉我,在您的调用堆栈的更上方,您的代码阻塞了返回的任务,例如 Task.WaitTask<T>.Result .默认情况下,这将 cause a deadlock我在我的博客上对此进行了解释。

要修复它,请替换 Task.WaitTask<T>.Resultawait .

关于c# - 如何阻止 HttpClient.GetAsync(uri) 挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21987895/

相关文章:

asp.net - 如何使 ASP.NET 停止将 null 解释为字符串

c# - System.Data.Common.DbDataReader.ReadAsync 中的异步是什么?

javascript - 使用 Vue.js 的异步/等待 axios 调用

c# - 64 位进程不支持 Explorer OM

c# JavaScriptConverter - 如何反序列化自定义属性?

asp.net - 在 Web API 中使用 Route 属性的可选参数?

node.js - 让 Mocha 等待 index.js 完成加载后再运行测试文件

c# - 如何从单独的类中提取字符串,同时将该类保留在我的主目录中的列表中(C#,Unity)

c# - 使用 protobuf 序列化 ConcurrentQueue

asp.net-mvc - System.Web.Mvc.ActionFilterAttribute与System.Web.Http.Filters.ActionFilterAttribute