C# 中的异步调用不返回结果
async call in C# not returning result
我有一个 ASP.NET MVC 站点和一个 Web API。
在我做的 MVC 站点的控制器操作中:
public ActionResult ActionAsync()
{
string result = MakeAsyncRequest().Result;
return View("Index", (object)result);
}
MakeAsyncRequest() 如下:
private async Task<string> MakeAsyncRequest()
{
using (var client = new HttpClient())
{
Task<string> response = client.GetStringAsync("http://localhost:55286/api/Home");
DoSomething();
return await response;
}
}
当我调试时,我看到 DoSomething() 正在执行(这只是一个空白),WebAPI 也被调用并且 return 是一个字符串,但是 return MakeAsyncRequest 不会发生,浏览器会无限期地等待服务器 return 某些东西。
这是为什么?与客户端成为 ASP.NET MVC 站点有关吗?
.Result
那是 classic ASP.NET deadlock. 不要阻止。或者,不要使用 async/await 但您的情况似乎很合适。也使操作异步。
我有一个 ASP.NET MVC 站点和一个 Web API。 在我做的 MVC 站点的控制器操作中:
public ActionResult ActionAsync()
{
string result = MakeAsyncRequest().Result;
return View("Index", (object)result);
}
MakeAsyncRequest() 如下:
private async Task<string> MakeAsyncRequest()
{
using (var client = new HttpClient())
{
Task<string> response = client.GetStringAsync("http://localhost:55286/api/Home");
DoSomething();
return await response;
}
}
当我调试时,我看到 DoSomething() 正在执行(这只是一个空白),WebAPI 也被调用并且 return 是一个字符串,但是 return MakeAsyncRequest 不会发生,浏览器会无限期地等待服务器 return 某些东西。
这是为什么?与客户端成为 ASP.NET MVC 站点有关吗?
.Result
那是 classic ASP.NET deadlock. 不要阻止。或者,不要使用 async/await 但您的情况似乎很合适。也使操作异步。