ASP.NET调用挂起异步等待

时间:2015-06-05 13:50:23

标签: asp.net async-await iis-express

当使用async await按顺序调用时,我从IIS Express中的API控制器调用Google API会无限期挂起。

var id = CreateDocument("My Title").Result;

async Task<string> CreateDocument(string title)
{
    var file = new GData.File { Title = title };
    // Stepping over this line in the debugger never returns in IIS Express.
    file = await Service.Files.Insert(file).ExecuteAsync();
    return file.Id;
}

它不会挂起从测试控制台应用程序调用相同的方法。

使用相应的同步方法调用时,同样的逻辑也不会挂起IIS Express。

var id = CreateDocument("My Title");

string CreateDocument(string title)
{
    var file = new GData.File { Title = title };
    // This has no problem
    file = Service.Files.Insert(file).Execute();
    return file.Id;
}

我应该在哪里寻找缺陷?

1 个答案:

答案 0 :(得分:4)

缺陷在于:

var id = CreateDocument("My Title").Result;

我在博客上解释you should not block on async code

而不是Result,请使用await

var id = await CreateDocument("My Title");