У меня есть конечная точка API Do tNet Core 2.2, которая принимает CancellationToken и периодически проверяет его во время обработки. Когда я вызываю эту конечную точку из моего Angular 7 внешнего интерфейса, а затем отменяю запрос (отписываясь), токен отмены не отражает отмененный статус. Есть ли шаг, который я пропускаю, чтобы токен был отменен правильно? Или это совсем не сейчас, процесс отмены запроса работает?
Обратите внимание, что я вижу начальный запуск запроса, API, выполняющий работу, и отмену запроса (через вкладку Chrome devtools Network).
Angular 7
private sub: Subscription;
doWork(): void {
// calls to http client, sending a POST
this.sub = this.service.doWork([1,2,3,4]).subscribe();
}
cancelWork(): void {
if(this.sub && !this.sub.closed) {
this.sub.unsubscribe();
}
}
API
[HttpPost("DoWork")]
public async Task<ActionResult<HttpResponseMessage>> DoWork([FromBody] List<int> ids, CancellationToken cancellationToken)
{
foreach(var id in ids)
{
// ---> cancellationToken.IsCancellationRequested is always false <-------
cancellationToken.ThrowIfCancellationRequested();
await doLongRunningTask(id);
}
}