【问题标题】:Async initialization in an ApiControllerApiController 中的异步初始化
【发布时间】:2016-06-17 15:51:13
【问题描述】:

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

我想要这样的东西:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2017-11-02
      • 2012-08-03
      相关资源
      最近更新 更多