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

Таймаут запроса в C#

Предел HttpClient.Timeout ограничивает весь обмен, включая чтение тела. Если время вышло, вызов бросает TaskCanceledException. Отдельной фразы "timeout" в этом исключении часто нет.

Щедрого предела на быстром хосте обычно хватает, текст ответа длиннее 100 символов:

using HttpClient client = new(); client.Timeout = TimeSpan.FromSeconds(30); string text = await client.GetStringAsync("https://example.com/"); Console.WriteLine(text.Length > 100);

Адрес с искусственной паузой и короткий Timeout чаще обрывают ожидание. Если сервер ответил быстрее предела, исключения не будет:

using HttpClient client = new(); client.Timeout = TimeSpan.FromSeconds(2); try { await client.GetStringAsync("https://httpbin.org/delay/5"); } catch (TaskCanceledException) { Console.WriteLine("timeout"); }

Для адреса "https://httpbin.org/delay/4" сравните пределы 10 секунд и 1 секунда. Для каждой попытки выведите "done", если ответ получен, и "late", если ожидание оборвалось. Каждое слово - с новой строки.

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