有没有办法为所有动作为CancellationToken创建过滤器?

时间:2019-07-12 11:00:08

标签: c# asp.net-core asp.net-core-webapi

我想创建一个ASP.NET Core WebApi服务,其中每个操作都支持CancellationToken,而无需使用参数明确实现。

我不想对每个动作都这样做:

[HttpGet]
public async Task<IEnumerable<string>> Get(CancellationToken token = default)
{
    return await DoStuffAsync(token);
}

我希望能够做到这一点:

[HttpGet]
public async Task<IEnumerable<string>> Get()
{
    return await DoStuffAsync(_contextManager.Token);
}

_contextManager从操作中提取CancellationToken。 使用自定义IActionFilter或其他方式是否可以实现?

1 个答案:

答案 0 :(得分:3)

传递给动作的org.springframework.web.multipart.MultipartException 使用CancellationTokenModelBinder绑定,{{3}}使用CancellationToken作为值。您可以直接自己使用,就像这样:

HttpContext.RequestAborted