如何使用WCF服务引用调用它的主机名

时间:2011-03-14 13:12:33

标签: c# .net wcf

我有一个由代码启动的WCF服务(通过创建BasicHttpBinding,ServiceHost等)。但是,此服务发布的WSDL的主机名是硬编码的。即我告诉服务它在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,但这样做很麻烦且容易出错,例如更改服务器设置或升级。

1 个答案:

答案 0 :(得分:1)

这应该通过使用useRequestHeadersForMetadataAddress服务行为来解决。

相关问题