Что происходит, когда происходит тайм-аут WebClientProtocol - PullRequest
1 голос
/ 12 декабря 2008

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

Спасибо Радж

Ответы [ 2 ]

4 голосов
/ 12 декабря 2008

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

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

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

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

0 голосов
/ 22 марта 2011

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

Запрос был прерван: соединение было неожиданно закрыто.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...