12

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

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

public async Task Invoke(HttpContext context,CancellationToken token)

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

我究竟做错了什么?

4

1 回答 1

23

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

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

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

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

于 2016-06-29T12:03:42.110 回答