我想创建一个 ASP.NET Core WebApi 服务,其中每个操作都支持 CancellationToken 而无需使用参数显式实现它。
我不想对每一个 Action 都这样做:
[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
或其他方式实现?
最佳答案
传递到操作中的CancellationToken
使用CancellationTokenModelBinder
绑定(bind),它使用 HttpContext.RequestAborted
作为值。您可以自己直接使用它,如下所示:
[HttpGet]
public async Task<IEnumerable<string>> Get()
{
return await DoStuffAsync(HttpContext.RequestAborted);
}
关于c# - 有没有办法为所有操作创建 CancellationToken 过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57005626/