WCF未绑定到正确的IP地址

时间:2008-09-30 16:26:29

标签: wcf binding tcp

我们在Windows 2003服务器上部署了一个WCF服务,该服务存在一些问题。配置正在使用wsHttpBinding,我们正在指定IP地址。这些服务由Windows服务托管。

当我们启动服务时,大多数时候它会抓取错误的IP地址。有几次绑定到正确的地址只是为了丢弃该绑定,并在处理一段时间后转到另一个地址(有2个)绑定到NIC。

它目前正在使用端口80(我们已将IIS配置为仅通过httpcfg绑定到1个地址)尽管我们已尝试使用具有相同结果的不同端口。

当Windows服务开始托管WCF服务时,属性显示它绑定到正确的地址;但是,tcpview显示它确实正在侦听错误的地址。

以下是配置baseAddress的配置部分。被束缚的那个最终成为.4而不是.9

<services>
    <service name="Service.MyService"
             behaviorConfiguration="serviceBehavior">
        <host>
            <baseAddresses>
                <add baseAddress="http://xx.xx.xx.9:80/" />
            </baseAddresses>
        </host>
        <endpoint address="MyService"
                  binding="wsHttpBinding"
                  bindingConfiguration="WSHttpBinding_IMyService"
                  contract="Service.IMyService" />
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange" />
    </service>
</services>
  • 是否需要设置其他配置?
  • 是否有工具可以帮助追踪绑定到错误地址的位置?

6 个答案:

答案 0 :(得分:1)

您的WCF配置对我来说没问题。这可能是NIC卡绑定顺序的问题。确保首先使用地址正确的NIC。这篇文章讨论了如何设置和查看nic绑定顺序:

http://theregime.wordpress.com/2008/03/04/how-to-setview-the-nic-bind-order-in-windows/

答案 1 :(得分:1)

这个问题似乎与国际空间站有关。以下是您从http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/ddf72ae0-aa1e-48c9-88d1-10bae1e87e4f.mspx?mfr=true

获取的错误的说明

当HTTP.sys解析IP包含列表并发现列表中的所有条目都无效时,会将此错误记录到事件日志中。如果发生这种情况,如表11.15中的说明所述,HTTP.sys将侦听所有IP地址。

您还可以查看以下涉及类似问题的主题 http://www.webhostingtalk.com/showthread.php?t=534174

希望这有帮助。

答案 2 :(得分:1)

我们遇到了同样的问题,这个功能帮助我们解决了问题:

http://msdn.microsoft.com/en-us/library/system.servicemodel.hostnamecomparisonmode.aspx

希望得到这个帮助。

答案 3 :(得分:0)

更多信息:我从NIC中完全删除了xx.xx.xx.4 IP地址并关闭了IIS。现在,当我尝试启动服务时,它失败了,我在系统事件日志中找到了它。

Description:
Unable to bind to the underlying transport for xx.xx.xx.4:80. The IP Listen-Only list may contain a reference to an interface which may not exist on this machine.  The data field contains the error number.

我的配置文件仍然具有xx.xx.xx.9 baseAddress设置。

答案 4 :(得分:0)

还有一条信息。如果我们更改绑定以使用NetTcp而不是WsHttp,它会绑定到端口80上的正确地址。将其更改回WsHttp会返回到错误的IP地址。

答案 5 :(得分:0)

忽略BaseAddress。您需要set a host header under IIS