我有一個ASP.NET MVC站點和一個Web API。 在MVC網站,我做的控制器動作:C#中的異步調用不返回結果
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也被調用並返回一個字符串,但是這時MakeAsyncRequest的返回不會發生,並且瀏覽器會無限期地等待服務器返回一些東西。
這是爲什麼?與客戶端是ASP.NET MVC網站有什麼關係?
'DoSomething()'返回嗎?當您暫停調試器時,您在線程窗口中看到了什麼? – CodeCaster 2015-02-07 18:19:28
在旁註中 - 我將放棄'async'函數修飾符並返回'response'而不等待它。您付出的代價很小,在這種情況下,它不會帶來任何好處。 – twoflower 2015-02-07 18:21:35
如果在這種情況下在輸出窗口 – MichaelLo 2015-02-07 18:22:45