ApiController中的异步初始化

4

ApiController有没有可以用来初始化异步资源的扩展点/重写方法?

我想要像这样的东西:

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

我知道我可以在每个控制器动作中做到这一点,但我想避免在4/5个不同的动作中都这样做。

1个回答

7
您可以覆盖核心控制器方法:ExecuteAsync。就像这样:
public override async Task<HttpResponseMessage> ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken) {
    _foo = await CreateFooAsync();
    return await base.ExecuteAsync(controllerContext, cancellationToken);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接