WebException не перехватывается, когда время ожидания соединения истекло

Я пытаюсь поймать WebException с определенным статусом внутри метода IsTransient, но он никогда не обнаруживает следующую ошибку:

System.Net.WebException: Unable to read data from the transport connection: Connection timed out. ---> System.IO.IOException: Unable to read data from the transport connection: Connection timed out. ---> System.Net.Sockets.SocketException: Connection timed out

И вот код:

private bool IsTransient(Exception ex)
    {
        var webException = ex as WebException;
        if (webException != null)
        {
            return new[]
            {
                WebExceptionStatus.ConnectionClosed,
                WebExceptionStatus.ConnectFailure,
                WebExceptionStatus.Timeout,
                WebExceptionStatus.RequestCanceled,
                WebExceptionStatus.ReceiveFailure
            }.Contains(webException.Status);
        }

        return false;
    }

Когда я тестирую его, отключив интернет-соединение на устройстве сканера, он возвращает true, но в производственной среде, когда веб-служба вызывает тайм-аут, он не работает.

Какой статус он возвращает? Вы говорите, что он вообще не возвращает статус?

TheGeneral 26.01.2019 01:57

@TheGeneral хорошо, глядя на трассировку стека, я предполагаю, что она возвращает тайм-аут состояния, но я не могу быть уверен на 100%, потому что это происходит только в производственной среде.

bigb055 26.01.2019 02:01

Если статус был TimeOut, почему он возвращает false? Я имею в виду, что очень маловероятно, что в «Содержит» есть ошибка. Дело в том, что мы не можем догадаться за вас, и это действительно ваша работа, чтобы выяснить, кто знает, что он возвращает, только то, что это не то, что вы ожидаете. Когда вы обнаружите это (и если вы настроены на этот тип проверки), вы сможете лучше справиться с этим.

TheGeneral 26.01.2019 02:01

@TheGeneral Если предположить, что это не тайм-аут, где я могу увидеть, какой статус соответствует приведенному выше сообщению об ошибке?

bigb055 26.01.2019 02:17

Документация не распространяется на это, если только вы не прочитаете исходный код, который, как я предполагаю, довольно длинный, или не найдете кого-то, кто написал в блоге о «точном» коде состояния, который появляется в каждой отдельной ситуации itz bitz (что я сомневаюсь, что вы будете find), поэтому я спросил вас, знаете ли вы возвращаемый код состояния... Возможно, вам просто придется использовать метод проб и ошибок и эмпирические данные, к сожалению, так как могут быть всевозможные крайние случаи

TheGeneral 26.01.2019 02:25
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
182
0

Другие вопросы по теме