默认情况下,此默认网站已设置为在端口80上针对“所有未分配”的IP。然而,我注意到这导致WCF服务使用服务器本地DNS名称生成其WSDL。即,wsdl中的所有URI都是:
http://myserver.subdomain.domain.com/.../...
由于我需要将此服务暴露给没有生产环境内部DNS知识的站点,因此这种方法不可行。而且该特定服务器没有外部DNS名称,只有外部IP地址...
我在IIS中更改了设置,从“全部未分配” - >“10.10.20.100”,并取得了一些成功。
这导致服务使用这些URI生成它的WSDL
http://10.10.20.100/.../...
这对于同一子域内和其他子域内的其他机器来说都是可以的,但是我在这里卡住了。服务器的外部IP地址(1.2.3.4)通过某些NAT / PAT翻译进行映射,因此它没有在服务器的IP设置中明确设置(即不显示在IP配置下)。
所以,如果我像为内部地址那样将IIS默认网站IP地址从“所有未分配”更改为“1.2.3.4”,那么WCF服务就会返回...
Bad Request (Invalid Hostname)
而如果我将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服务踢出窗外之前。