Странный выпуск .net webservice 503 - PullRequest
2 голосов
/ 30 мая 2011

У меня довольно странная проблема (IMO) с веб-сервисом, предоставленным третьей стороной.

При вызове веб-службы на работающем сервере все работает как положено. Вызывая его при настройке разработки, иногда возвращается с 503 - Service unavailable, в других случаях это работает. Прерывистый .... Оба эти теста выполняются с одного и того же клиента, поэтому я не думаю, что это проблема сетевого уровня.

Теперь странно то, что если я помещаю точку останова на линию перед вызовом веб-службы и перехожу через вызов, это работает. Даже выполнение кода (F5) после этой точки останова позволяет ему добиться успеха. Добавление System.Threading.Thread.Sleep(1000); перед вызовом (для имитации какой-либо точки останова) не имеет никакого эффекта.

У меня нет доступа к удаленным серверам, хотя я знаю его сервер 2003 / IIS 6.0 и компания, предоставляющая систему, с которой взаимодействует веб-сервис, утверждают, что с их сервером / программным обеспечением проблем нет.

Так что, прежде чем я начну серьезно указывать пальцем, кто-нибудь испытывал что-то подобное раньше или что-нибудь еще, что я могу попробовать?

Ответы [ 3 ]

1 голос
/ 02 июня 2011

В конце концов, это было вызвано проблемой с прозрачным прокси (ip spoofing), который расположен выше по потоку между моей системой и удаленной системой. Прокси возвращал 503, но под видом целевого хоста.

Мне удалось найти это только по счастливой случайности, как бы я это определила, если бы искала этот тип проблемы, так как в http-заголовке / необработанном дампе ничего не выскакивает, чтобы я указал на эту проблему?

0 голосов
/ 31 мая 2011

Возможно, что сервер не принимает несколько запросов в течение короткого периода времени от одного и того же клиента, чтобы защитить себя от DoS-атак.

В таком случае клиенты должны включать ограничение регулирования в свои запросы. Так что проверьте еще раз с вашим поставщиком услуг.

0 голосов
/ 30 мая 2011

503 - ошибка сервера.Он не может быть получен от клиента.

Если необходимо «доказать» это, то вам необходимо отслеживать сетевой трафик, используя Fiddler или что-то подобное.

...