【发布时间】:2010-10-22 01:02:10
【问题描述】:
我有一个简单的 WCF Web 服务。它托管在我们生产域中默认网站下的 IIS 上。 (本地地址:10.10.20.100)
默认情况下,此默认网站设置为端口 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 服务将返回...
错误请求(无效主机名)
如果我在内部 IP 地址上配置 IIS,并尝试通过我得到的外部 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 服务从窗口中删除之前,请有人帮助我。
【问题讨论】:
-
这是个好问题。为什么像这样的问题没有得到支持,而是像“厌倦了编程 GUI/业务应用程序,下一步该做什么?”这样的问题。在几分钟内获得 4 个?
-
很遗憾,我无法回答您的问题 - 我只能投赞成票。 +1。
-
感谢到目前为止的答案,伙计们。我今天将通过覆盖 ServiceHost 来尝试 Steve 的建议,如果这不起作用,我将硬着头皮让系统操作员为我们的 API 服务器获取一个新的 FQDN。
-
这是解决此问题的解决方案stackoverflow.com/a/9671430
标签: wcf web-services iis .net-3.5 configuration