Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > Проблема с ответом от Web Service


Автор: sip 10.2.2009, 21:09
Есть web service на .NET1.1 Проблема в следующем: клиент делает несколько вызовов методов и все они отказываются с WebException: Time out. Потом спустя минуту делается еще один вызов и он проходит успешно, но вместе с ним проходят и предыдущие запросы, это видно по записям в базе данных. Подскажите,  что за проблема может быть с веб сервисом и как от нее избавиться.
Спасибо.

Автор: emmanuil 11.2.2009, 06:10
Конечно может глупость скажу, но попробуй увеличить таймаут в ISS на сайте.

Автор: sip 11.2.2009, 11:08
Спасибо за ответ, я попробую. 
Но получается как-то странно, допустим первые два вызова закончились таймаутом, но остались на сервере "сидеть" как бы в очереди, а третий вызов их пробивает и выполняются сразу все три...

Автор: PashaPash 11.2.2009, 12:19
sip, сервер получает запрос, начинает его обрабатывать. Клиент ждет столько, сколько прописано в таймауте на его стороне (WebClientProtocol.Timeout). Не дожидается и бросает твоему коду исключение. А сервер спокойно завершает обработку. Никаких "сидеть в очереди" при 3-х вызовах скорее всего нет. Это, конечно, если запросы на стороне сервера долго обрабатываются - например, если это 2 первых запроса к вебсервису после его рестарта. smile

Автор: sip 11.2.2009, 20:25
PashaPash, а как правильно делается в таком случае? я хочу чтобы клиет и сервер имели один набор данных, а так получается сервер меняет свою часть, а клиент нет.

Автор: emmanuil 12.2.2009, 06:27
Увеличь таймаут. PashaPash ведь написал где. Твой прокси класс к веб-службе является наследником WebClientProtocol и у него значит есть свойство Timeout (в миллисекундах), вот его и увеличь. smile

Автор: sip 12.2.2009, 08:58
Установлен таймаут у клиента на 5 секунд. Больше клиент ждать не должен. Но нужно чтобы и сервер прекратил все действия. А у меня клинет уходит по эксепшену а сервер продолжает свою работу. 
Как такое сделать?

Автор: PashaPash 12.2.2009, 11:29
sip, на сервере выполняется кусок твоего кода. Как клиент, не дождавшийся ответа, может взять и прекратить его?
Проще всего будет использовать транзакции, тогда действия сервера будут просто откатаны назад. Но это потянет за собой MSDTC и минимум 2.0. Смотри TransactionInterop. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)