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 但您的情况似乎很合适。也使操作异步。