Как отменить запрос веб-API .Net Core с помощью Angular?C#

Место общения программистов C#
Ответить
Anonymous
 Как отменить запрос веб-API .Net Core с помощью Angular?

Сообщение Anonymous »

У меня есть следующие два приложения:
  • Приложение Angular 6/7
  • .Net Core Веб-API
Я делаю запрос GET к API, используя HttpClient Angular в качестве показано ниже

Код: Выделить всё

this.subscription = this.httpClient.get('api/Controller/LongRunningProcess')
.subscribe((response) =>
{
// Handling response
});
Метод LongRunningProcess контроллера API имеет следующий код

Код: Выделить всё

    [HttpGet]
[Route("LongRunningProcess")]
public async Task LongRunningProcess(CancellationToken cancellationToken)
{
try
{
// Dummy long operation
await Task.Factory.StartNew(() =>
{
for (int i = 0; i < 10; i++)
{
// Option 1 (Not working)
if (cancellationToken.IsCancellationRequested)
break;

// Option 2 (Not working)
cancellationToken.ThrowIfCancellationRequested();

Thread.Sleep(6000);
}

}, cancellationToken);
}
catch (OperationCanceledException e)
{
Console.WriteLine($"{nameof(OperationCanceledException)} thrown with message: {e.Message}");
}

return Ok();
}
Теперь я хочу отменить этот длительный процесс, поэтому я отказываюсь от подписки на стороне клиента, как показано ниже

Код: Выделить всё

// On cancel button's click
this.subscription.unsubscribe();
Приведенный выше код отменяет запрос, и я вижу, что он отменен на вкладке Сеть браузера, как показано ниже

Изображение


Но это не приведет к тому, что IsCancellationRequested станет true в методе LongRunningProcess API, поэтому операция продолжится.

[Примечание]: И Вариант 1, и Вариант 2< /strong> в методе API не работают, даже если я звоню с помощью почтальона.

Вопрос:
Есть ли способ отменить это < Strong>LongRunningProcess операция метода?

Подробнее здесь: https://stackoverflow.com/questions/577 ... ng-angular
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»