У меня есть простой веб-сервис WCF. Он размещен на IIS на веб-сайте по умолчанию в нашем производственном домене. (местный адрес: 10.10.20.100)
По умолчанию этот веб-сайт по умолчанию был настроен для «всех неназначенных» IP-адресов на порту 80: однако я заметил, что это заставило службу WCF генерировать свой WSDL с использованием локального DNS-имени сервера. все URI в WSDL были
http://myserver.subdomain.domain.com/.../...
Это было нехорошо, так как мне нужно было предоставлять эту услугу сайтам, которые не знакомы с внутренними DNS рабочих сред. И этот конкретный сервер не имеет внешнего 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 по умолчанию с «Все неназначенные» -> «1.2.3.4», как я сделал для внутреннего адреса, то служба WCF просто вернется с ...
Неверный запрос (неверное имя хоста)
И если я оставлю IIS Configured на внутреннем 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 генерировать свои URI WSDL с внешним IP-адресом, который явно не настроен на сервере?
Кто-нибудь, помогите мне, пожалуйста, прежде чем я выброшу Сервис WCF из окна.