ApiController中的异步初始化

时间:2016-06-17 15:51:14

标签: c# asp.net-web-api async-await asp.net-web-api2

ApiController是否有可用于初始化异步资源的扩展点/覆盖?

我希望有这样的东西:

public ValuesController : ApiController
{
    private IFoo _foo;
    protected async override void InitializeAsync(HttpControllerContext controllerContext)
    {
        _foo = await CreateFooAsync();
    }
}

我知道我可以在每个控制器动作中执行此操作,但我希望避免在4/5不同的操作中执行此操作。

1 个答案:

答案 0 :(得分:2)

您可以覆盖核心控制器方法:ExecuteAsync。像这样:

public override async Task<HttpResponseMessage> ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken) {
    _foo = await CreateFooAsync();
    return await base.ExecuteAsync(controllerContext, cancellationToken);
}