У меня есть простой сервис, который я использовал для Azure. Доступ к нему осуществляется через:
http://xxxxxxxxxxxxxxxxxxxxxxx.cloudapp.net/MyTestService.svc
URL-адрес WSDL использует внутреннее имя машины вместо общедоступного DNS:
svcutil.exe http://rd001520d328923a/MyTestService.svc?wsdl
Очевидно, что WSDL недоступен извне машины с этим.
Мне известно о нескольких вещах, которые можно изменить, если вы используете это в IIS, или если вы знаете URL-адрес службы. Например, изменив конфигурацию <serviceMetadata>
, чтобы указать свойство httpGetUrl
, но это не сработает, поскольку мне нужно будет включить абсолютный URL. Используя относительный URL-адрес, он все еще использует внутреннее имя машины. Реальная проблема заключается в том, что WSDL содержит ссылки на URL с именем машины, что делает его бесполезным.
Существует два нестандартных метода:
-
Было высказано предположение, что я могу захватить WSDL, отредактировать его, чтобы исправить URL-адреса, а затем загрузить его, чтобы он был доступен с другого URL-адреса.
-
Я обнаружил, что исправление с начала 2010 года было доступно, но там должен быть лучший способ.
Как это можно решить, если вместо имени машины будет использоваться общедоступный DNS-сервер?