Что происходит при истечении времени ожидания WebClientProtocol

У нас есть клиентское приложение, которое ссылается на веб-сервис. Мы установили для свойства timeout объекта webclientprotocol значение 50 (мс) и хотели наблюдать, что происходит. Мы связали давно работающий веб-метод, который возвращает клиенту огромный DataSet. Когда было значение по умолчанию, DataSet был возвращен клиенту должным образом. Когда мы изменили это значение на 50 (мс), мы ничего не наблюдали. Мы предполагали, что на стороне клиента произойдет какое-то исключение, поскольку истекло время ожидания. Может ли кто-нибудь объяснить, что здесь происходит

Спасибо Радж

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

Ответы 2

К сожалению, документация неясна. Когда вы говорите, что «ничего не наблюдали», что именно вы имеете в виду? Код завис навсегда? Было сгенерировано исключение? Предположительно, действительный DataSet не был возвращен.

Я бы выбрасывал ожидать a TimeoutException, но я удивлен, что это не совсем очевидно в вашем клиентском коде. Вы же не глотаете исключения, не так ли?

Вы выполняете вызов синхронно или асинхронно? Если это асинхронно, я бы ожидал, что будет выполнен обратный вызов, а затем будет выдано исключение при вызове «EndXxx».

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

Я только что столкнулся с этим. В веб-сервисе .NET 2.0 он выдает довольно неопределенный WebException, и только свойство Message может отличить его:

The request was aborted: The connection was closed unexpectedly.

Я не пробовал использовать его в ссылках на службы на основе WCF, сгенерированных по умолчанию в более новых версиях Visual Studio, но если я правильно понимаю это, они выдают более полезный TimeoutException, который, как и Джон Скит, я бы предположил (и предпочел бы ) быть поведением веб-службы.

Обратите внимание, что тайм-аут предназначен только для синхронных вызовов (по крайней мере, в веб-службе; я думаю, что это верно и для ссылки на службу WCF). Если вы хотите, чтобы время ожидания асинхронного вызова истекло, вам придется установить таймер и прервать вызов вручную, например, продемонстрированный здесь.

На самом деле это не отвечает на вопрос. Кроме того, вы смотрели свойство InnerException?

John Saunders 22.03.2011 05:49

@John Saunders: Вопрос был в том, "Что происходит, когда истекает время ожидания WebClientProtocol?" Ответ: «Выдает исключение WebException». Как это не отвечает на вопрос? И да, я посмотрел на свойство InnerException, надеясь найти там исключение TimeoutException. К сожалению, он был нулевым. Это было частью того, почему только текст сообщения отличал исключение от других возможных WebExceptions. Это неприятно, когда свойство, предназначенное только для потребления людьми, необходимо использовать для принятия программных решений.

P Daddy 22.03.2011 06:21

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