IIS Express上的REST API中的异步/等待

时间:2018-08-07 20:30:20

标签: c# rest async-await iis-express

我正在构建一个RESTful Web API,它将触发多个任务,等待它们完成然后返回一些数据。但是我一直在等待,似乎挂起了问题。我按最基本的比例缩小了比例:

[Authorize]
public class ValuesController : ApiController
{
    public IEnumerable<string> Get([FromUri]bool enableWait)
    {
        Task t = Silly(enableWait);
        t.Wait();

        return new string[] { "value1", "value2" };
    }

    private async Task Silly(bool delay)
    {
        if (delay)
            await Task.Delay(1);
    }
}

如果我通过false,则返回没有任何问题。如果返回true,则应等待1毫秒(加上Task / Asnyc开销),然后返回。但是它只是挂在那里。

我正在VS 2017附带的IIS Express上运行它。有什么线索吗?

1 个答案:

答案 0 :(得分:5)

实施member时,您需要确保自始至终地实现它。您的控制器操作必须为async/await,并且需要async您的await方法:

Silly()

您还必须确保您的public async Task<IEnumerable<string>> Get() { return await Silly(); } 方法正在调用所需的正确异步方法,并确保您Silly()正在使用它们。