c# - 有没有办法为所有操作创建 CancellationToken 过滤器?

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

我想创建一个 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/

相关文章:

c# - 新手 : Combining two Scripts

c# - ASP.NET Core 服务器端验证失败导致 Microsoft.AspNetCore.Mvc.SerializableError

javascript - 从 ASP.NET CORE Web Api 获取 React 中的特定响应 header (例如,Content-Disposition)

c# - WP7 上 ListPicker 的 caliburn.micro 绑定(bind)约定

c# - 哪个 C# double 文字不能完全表示为 double?

git - ASP.NET Core - 使用 git 部署在 Azure 上运行 webpack

asp.net - ASP.Net Core Web Api 中的异步视频流无法正常工作

security - 服务器到服务器通信中是否需要防伪 token ?

c# - 如何为 {id}/visit 创建有效路线?

c# - 在 C# 中使用 SetWindowPos 移动窗口