У меня есть простой веб-сервис WCF. Он размещался на IIS на веб-сайте по умолчанию в нашем производственном домене. (локальный адрес: 10.10.20.100)
По умолчанию этот веб-сайт по умолчанию был настроен для "Все неназначенные" IP-адреса в порту 80: однако я заметил, что это вызвало службу WCF для ее создания WSDL с использованием локального имени DNS сервера. то есть все URI в wsdl были
http://myserver.subdomain.domain.com/.../...
Это было нехорошо, так как мне нужно разоблачить эту услугу на сайтах, которые не знают о внутренней среде производственной среды. И этот конкретный сервер не имеет внешнего DNS-имени. Только внешний IP-адрес...
У меня был некоторый успех в изменении настройки в IIS из "Все неназначенные" → "10.10.20.100"
Это заставляет службу генерировать WSDL с URI
http://10.10.20.100/.../...
Это нормально для других машин внутри субдомена и других поддоменов, но здесь я застрял. Внешний IP-адрес серверов (1.2.3.4) отображается через некоторый перевод NAT/PAT, поэтому он явно не установлен в настройках IP-адресов серверов (т.е. Он не отображается в IP-конфигурации)
Итак, если я изменил IP-адрес веб-сайта по умолчанию IIS с "All Unassigned" → "1.2.3.4", как я сделал для внутреннего адреса, тогда служба WCF вернется с...
Неверный запрос (недопустимое имя хоста)
И если я покину IIS, настроенный на внутреннем IP-адресе, и попытаюсь получить доступ к службе через внешний IP-адрес, я получаю
No protocol binding matches the given address
'http://1.2.3.4/TestService/Service.svc'. Protocol bindings are
configured at the Site level in IIS or WAS configuration
Есть ли способ заставить IIS/WCF генерировать WSDL URI с внешним IP-адресом, который явно не настроен на сервере?
Кто-то мне поможет, прежде чем я отброшу службы WCF из окна.