带有取消令牌的自定义 ASP.NET Core 中间件

Posted

技术标签:

【中文标题】带有取消令牌的自定义 ASP.NET Core 中间件【英文标题】:Custom ASP.NET Core Middleware with cancellation Token 【发布时间】:2016-11-01 02:24:44 【问题描述】:

我有一个自定义 ASP.NET Core 中间件,我想检索请求的取消令牌。

我尝试将它添加到调用的签名中,如下所示:

public async Task Invoke(HttpContext context,CancellationToken token)

但是一旦我添加它,它就不再被调用了。

我做错了什么?

【问题讨论】:

【参考方案1】:

我认为这个想法是不能从中间件内部取消中间件的调用,如果您调用一些接受取消令牌的异步任务,那么您可以创建一个并将其传递给您从内部调用的内容在那里。

如果请求中止,常见的情况是取消任务,因此您可以像这样创建令牌:

CancellationToken CancellationToken => context?.RequestAborted ?? CancellationToken.None;

然后调用一些异步服务,比如获取数据或查询数据库,如果请求被中止,那么取消请求应该发生

【讨论】:

以上是关于带有取消令牌的自定义 ASP.NET Core 中间件的主要内容,如果未能解决你的问题,请参考以下文章

向 ASP.NET Core 的 JWT 令牌添加自定义验证?

带有 ASP.NET Core WebAPI 的 Dart 中的令牌刷新并发问题

带有 JWT Bearer 令牌和 ASP.NET Core 2 WebApi 的 Azure AD 用户信息

ASP.NET Core JWT 和声明

ASP.Net-Core 中的自定义身份验证

如何在 ASP.NET Core 的自定义 TagHelper 中呈现 Razor 模板?