Я использую HttpWebRequest / Response для вызова WEB API, это работает, и у меня есть блок try / catch для обработки ошибок, который в основном работает, но проблема в том, что одна конкретная ошибка приводит к сбою try / catch.
System.Net.Http.HttpRequestException: попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через некоторое время, или не удалось установить соединение, так как подключенный хост не смог ответить---> System.Net.Sockets.SocketException: попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через определенный промежуток времени, или не удалось установить соединение, так как подключенный хост не смог ответить
в системе. Net.Http.ConnectHelper.ConnectAsync (Строковый хост, порт Int32, CancellationToken cancellationToken)
--- Конец внутренней трассировки стека исключений ---
в System.Net.Http.ConnectHelper. ConnectAsync (Строковый хост, порт Int32, CancellationToken cancellationToken)
at System.Threading.Tasks.ValueTask`1.get_Result ()
в System.Net.Http.HttpConnectionPool.CreateConnectionAsync (запрос HttpRequestMessage, CancellationToken cancellationToken)
в системе. ValueTask`1.get_Result ()
в System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync (ValueTask`1 creationTask)
в System.Threading.Tasks.ValueTask`1.get_esult (1022 *
в System.Net.Http.HttpConnectionPool.SendWithRetryAsync (запрос HttpRequestMessage, Boolean doRequestAuth, CancellationToken cancellationToken)
в System.Net.Http.RedirectHandynS RegencySignStation*
в System.Net.Http.DecompressionHandler.SendAsync (запрос HttpRequestMessage, CancellationToken cancellationToken)
в System.Net.Http.DiagnosticsHandler.SendAsync (HttpRequestMessage 1030 * *en * 10enen * 10enen * 10enen * 10enen * 10enen * 10Ten * 10 * * * * * * * *
не обрабатывается этой компаниейde в моем предложении catch, и я не понимаю, почему
catch (WebException we)
{
JObject emptyObject = null;
if (we.Status == WebExceptionStatus.Timeout)
{
log.LogInformation($"xxx_V2 HttpWebRequest suffered a timeout for URL: {apiUrl} at: {DateTime.Now}");
}
...... Removed non relevant code
}
Это означает, что код, который находится ниже, будет аварийно завершаться, поскольку он полагается на наличие заголовков в ответе, но, конечно, у меня нет ответа, так как он истек,вот почему я пытаюсь поймать это выше.