Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpHtCan 466 of 509 menu
◀ ▶

Отмена HTTP-запроса в C#

Источник CancellationTokenSource выдаёт токен. Его отменяют по таймеру или вручную. Если отмена наступила до конца запроса, вызов GetAsync бросает OperationCanceledException. Это не ошибка HTTP на сервере.

Если токен отменён заранее, запрос не стартует:

using HttpClient client = new(); using CancellationTokenSource cts = new(); cts.Cancel(); try { await client.GetAsync("https://example.com/", cts.Token); } catch (OperationCanceledException) { Console.WriteLine("canceled"); }

Срок можно задать прямо в конструкторе CancellationTokenSource(TimeSpan): это клиентский предел ожидания. На медленной сети запрос оборвётся, на быстрой исключения не будет:

using HttpClient client = new(); using CancellationTokenSource cts = new(TimeSpan.FromSeconds(30)); using HttpResponseMessage response = await client.GetAsync("https://example.com/", cts.Token); Console.WriteLine(response.IsSuccessStatusCode);

Запросите "https://httpbin.org/delay/2" с токеном, отменённым до отправки. В обработчике отмены выведите "stopped".

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить