Использование имени компьютера в URL вызывает проблемы при подключении к веб-службам
Множество приложений, над которыми я работаю, имеют доступ к тем же примерно 8 веб-службам, которые есть у нас. Все эти службы и приложения находятся в одном окне и используют имя компьютера при попытке подключения к веб-службе.
Например:
Если у меня есть веб-служба с именем MapDataService, и у меня есть приложение, которое обращается к нему, оно получит доступ к нему по URL-адресу: http://COMPUTERNAME/MapDataService/MapDataService.asmx.
Это работает в большинстве приложений, которые обращаются к веб-сервису. Однако у нас есть несколько приложений, которые при использовании имени компьютера в URL-адресе не будут получать данные, возвращаемые службой (на самом деле возвращается 503). Чтобы заставить его работать, вместо имени компьютера нужно использовать IP-адрес системы.
Это кажется мне очень странным, учитывая, что, как я упоминал ранее, все приложения и службы находятся в одном окне, и большинство других приложений используют имя COMPUTERNAME без проблем.
Может кто-нибудь дать мне некоторое представление о том, что может быть причиной этого? У нас нет доступа к журналам IIS, и какие журналы мы получили (это на сайте клиента), не очень полезны.
3 ответа
Я согласен с BillN.
В общем, ошибки 503 должны отправляться сервером клиенту только тогда, когда "сервер в настоящее время не может обработать запрос из-за временной перегрузки или обслуживания сервера". ( http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html). Возможно, ваш клиент сообщает об этом неправильно, когда сервер не отвечает (через определенное время).
Попробуйте PING COMPUTERNAME из тех клиентов, которые не могут подключиться к веб-службе. Предполагая, что сервер отвечает на Pings в целом, это скажет вам, правильно ли работает DNS.
Вы можете вручную ввести имя COMPUTERNAME сервера в файл HOSTS клиента, чтобы увидеть, помогает ли это, но если это так, то возникает какая-то другая проблема с DNS, и редактирование HOSTS - всего лишь бинт. Исправьте реальную проблему, если это возможно.
Также возможно, исходя из имеющейся у нас ограниченной информации, что сервер действительно иногда иногда перегружен. Если вы всегда получаете 503, когда используется COMPUTERNAME, и никогда не получаете его, когда используется IP-адрес, это, вероятно, не тот случай.
Все ли приложения запущены в одной системе? Похоже, что некоторые приложения не разрешают имя хоста в IP-адрес, поэтому вы должны сделать это для них. Я бы посмотрел на проблемы DNS/ хост-файла.
Вы говорите, что есть несколько приложений, которые не могут получить доступ к веб-сервису с именем компьютера. Могут ли другие приложения получить доступ к этому веб-сервису с именем компьютера? Можно ли вручную с помощью браузера?
Если некоторые приложения работают против одного веб-сервиса, а другие - против одного и того же веб-сервиса, я полагаю, что это проблема внутренних настроек клиентских приложений (строка подключения и т. Д.)
Если это все приложения для определенного веб-сервиса, то я бы посмотрел и использовал ли вы заголовки хостов или что-то, что может блокировать определенные имена DNS. Или что в конфигурации приложения используется правильная аутентификация и т. Д.