2016-06-17 50 views
2

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

我想有这样的事情:

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

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

回答

2

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

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

不知道我错过了这一个......谢谢! – Dismissile