Я использую .NET HttpClient
для отправки запросов на мой сервер. Я установил свойство HttpClient.Timeout
на 10 секунд, поэтому я получаю исключение A task was cancelled
всякий раз, когда сервер не обрабатывает мой запрос менее чем за 10 секунд. Хорошо, пока здесь.HttpClient - как выяснить, работает ли сервер быстрее?
Однако, если сервер выключен, для получения правильного исключения, такого как изображение на картинке, требуется HttpClient
около ~ 20 секунд.
Я бы хотел, чтобы это исключение было быстрее, чем 10 секунд, чтобы иметь возможность отличать сервер от «Вниз» и «Операция», было слишком длинным сценарием. Я не могу найти ничего об этом в документации msdn. Есть ли тайм-аут, который можно установить на HttpClient
?
Вот как я построении HttpClient
var webRequestHandler = new WebRequestHandler
{
UseProxy = false,
Proxy = null,
AllowPipelining = false,
ContinueTimeout = TimeSpan.Zero,
UseCookies = false,
AllowAutoRedirect = false,
};
var httpClient = new HttpClient(webRequestHandler);
httpClient.Timeout = timeout;
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "application/json");
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", userAgent);
httpClient.DefaultRequestHeaders.ExpectContinue = false;
Просто немного аналогии, что я хочу, чтобы вы думали о: Если вы по телефону с кем-то и задать вопрос , Есть ли у вас надежный (быстрый/немедленный) способ определить, спящий ли человек, с которым вы разговариваете, или просто размышляете об этом? – MrPaulch
Логически то, что вы просите, не имеет смысла, вы не можете знать, если у вас не было ответа, потому что сервер не работает или слишком долго обрабатывается ваш запрос, вы просто не получили ответа. –
Я думаю, что логически это имеет смысл, поскольку существует разница между ответом HTTP и TCP-соединением. – AlexDev