簡體   English   中英

有沒有辦法為所有動作為CancellationToken創建過濾器?

[英]Is there a way to create a filter for CancellationToken for all actions?

我想創建一個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或其他方式是否可以實現?

傳遞給動作的CancellationToken是使用CancellationTokenModelBinder綁定的,該對象使用HttpContext.RequestAborted作為值。 您可以自己直接使用它,如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM