【发布时间】:2011-03-14 21:17:37
【问题描述】:
我有一个由代码启动的 WCF 服务(通过创建 BasicHttpBinding、ServiceHost 等)。但是,此服务发布的 WSDL 的主机名是硬编码的。 IE。我告诉服务它在 example.com 上运行,并且 WSDL 将导入诸如
<xsd:import schemaLocation="http://example.com:8018/MyService" etc etc>
现在,从 example.com 本身,我可能希望通过 http://localhost:8018/MyService 而不是 example.com 来引用此服务。但是,xsd 导入仍然会引用预配置的地址。
难道没有办法让服务使用在 WSDL 内部调用 WSDL 页面的主机吗?还是只使用相对地址? (假设客户支持;我不确定)
这很重要的原因是,服务是由同一服务器公园中的服务器通过其内部 IP 地址来寻址的,而外部服务是通过其外部主机名来寻址的。我们希望避免所有流量再次进出子网,因为我们无法让 WCF 了解它可能具有不同的主机名。我们当前的解决方案是修改内部客户端中的hosts 文件以使外部主机名指向内部IP,但这在例如更改服务器设置或升级。
【问题讨论】: