我们在Windows Server 2003上托管WCF Web服务。此服务器只有2个内部IP。我们希望从外部公开服务。这是通过将外部IP映射到服务的防火墙完成的。
因此,我需要修改服务以显示内部链接的外部IP。这不是问题,因为它只能在外部使用。
更改IIS中的主机标头值会从IIS发出“错误请求(无效主机名)”响应。我还在web.config中的端点条目中添加了一个“地址”值...但它只是指向内部机器名称。有什么想法吗?
编辑:我可以验证IIS7具有完全相同的行为。地址不起作用。不同的主机名给出了无效的主机名错误。有没有办法提出不同的(虚构的)IP? :/
EDIT2:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicAnonymous">
<security mode="None"/>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="Extended">
<serviceMetadata httpGetEnabled="true"/>
<dataContractSerializer maxItemsInObjectGraph="2147483646"/>
</behavior>
</serviceBehaviors>
</behaviors>
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="false" logMessagesAtServiceLevel="false" logMessagesAtTransportLevel="true" maxMessagesToLog="3000"/>
</diagnostics>
<services>
<service behaviorConfiguration="Extended" name="AnCWCFWebService.ProductInfoProvider">
<endpoint address="" binding="basicHttpBinding" name="ASMX" bindingConfiguration="BasicAnonymous" contract="AnCWCFWebService.Interfaces.IProductInfoProvider"/>
</service>
</services>
</system.serviceModel>
答案 0 :(得分:7)
答案 1 :(得分:1)
您只需在IIS中配置主机标头,以便WSDL引用中的链接将使用donmain名称而不是本地计算机名称。
退房 Steps to configure IIS host header so that WCF will use domain name in WSDL references.
答案 2 :(得分:1)
为什么不直接为服务器分配新的IP地址而不是乱搞主机名? Windows Server可以为同一个NIC提供多个IP地址。
Here是一篇关于它的文章。