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

我想要这样的东西:

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


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

最佳答案

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

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

09-28 01:00