取消 API 请求如何在 ASP .NET Core API 内部工作?

How cancelling API request works internally in ASP .NET Core API?

假设我有简单的端点:

 [HttpGet]
 public async Task<ActionResult<string>> Get(CancellationToken cancellationToken)
 {
    // something...      
 }

然后我通过 Angular 发送一些 http 请求:let sub = this.http.get<string>("some url").subscribe() 然后在收到后端响应之前我取消订阅:sub.unsubscribe()

我的问题是:

为什么后端的 cancellationToken 将 IsCancellationRequested 设置为 true,即使当我监视传出的 http 请求时没有更多的 http 请求传递到后端?

我认为您假设 IsCancellationRequested 已从请求发起者更改。

我不认为是这样。相反,我相信只要请求被中止或以其他方式终止,该值实际上会在内部由 API 更改,以向您发出信号,表明您不应再在已关闭的请求上浪费资源。至少,这是我基于我能够从 Microsoft 找到的唯一 documentation 得出的结论:

CancellationToken

Actions can optionally bind a CancellationToken as a parameter. This binds RequestAborted that signals when the connection underlying the HTTP request is aborted. Actions can use this parameter to cancel long running async operations that are executed as part of the controller actions.