TGViewer
Уютное сообщество C# разработчиков Уютное сообщество C# разработчиков @cscharp · 2.26K subscribers
Post #88 3.57K
Как изменить таймаут для конкретного запроса в HttpClient?

Одной из лучших практик по работе с HttpClient в C# считается переиспользование одного экземпляра клиента для множества запросов. Как минимум во избежание port exhaustion.

Однако, возникают ситуации, когда для разных запросов требуется разное поведение клиента. Например, разные таймауты.

Проблема в том, что HttpClient.Timeout устанавливается единожды, во время создания клиента. И несмотря на наличие public set'тера, это значение не может быть изменено впоследствии. Любые попытки пресекаются выбрасыванием InvalidOperationException.

Но я бы не писал этот пост, если бы не существовало решения проблемы. А решение довольно простое:
TimeSpan timeout = GetMyTimeout();
using (var tokenSource = new CancellationTokenSource(timeout))
{
var response = await httpClient.GetAsync(uri, tokenSource.Token);
HandleResponse(response);
}


Такое решение можно не только использовать "в лоб", но и обернуть в пайплайн из DelegatingHandler'ов. Для того чтобы оно работало, потребуется убедиться в двух вещах:

1️⃣ Пользовательский таймаут меньше того, что установлен в HttpClient.Timeout

2️⃣ Пользовательский таймаут валиден. Проще говоря, время ожидания больше 0 секунд.

#полезное #tips
  • ❤ 9
  • 👍 4
More from @cscharp
  1. Sep 21, 2026☄️ Вакансии по C# за неделю: 6️⃣ Senior .NET Developer REMOTE GLOBAL Senior · Remote 2️⃣ J…
  2. Sep 14, 2026C# Programming Автор: Patrick Felicia Год издания: 2024 #csharp #unity #en Скачать книгу
  3. Sep 14, 2026🔍Тестовое собеседование с Senior C# разработчиком уже завтра 15 сентября(уже завтра!) в 1…
  4. Sep 14, 2026🔥 Вакансии по C# за неделю: 📥 Senior Fullstack Developer REDHR.RU Senior · Remote · ₽ 23…
  5. Sep 7, 2026🔔 Вакансии по C# за неделю: ⭐️ Full Stack Developer Life Data Lab Senior · Remote · $3 50…
  6. Sep 3, 2026C#. Алгоритмы и структуры данных Автор: Н. А. Тюкачев Год издания: 2021 #csharp #ds #ru Ск…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →