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