WCF没有绑定到正确的IP地址。

3
我们在Windows 2003服务器上部署了一个WCF服务,但出现了一些问题。配置使用wsHttpBinding,我们指定了IP地址。该服务由Windows服务托管。
当我们启动服务时,大多数情况下它会获取错误的IP地址。有时它会绑定到正确的地址,但在短时间内处理后就会放弃该绑定并转向另一个地址(有2个)绑定到NIC上。
目前它正在使用端口80(我们已通过httpcfg将IIS配置为仅绑定到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个回答

1

有2个网卡,但其中一个已禁用。两个IP都绑定到唯一启用的网卡上。我尝试了排序,但它没有解决问题。 - palehorse

1

问题似乎与ISS有关。以下是你从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

希望能对你有所帮助。


正如原始问题所述,我们已经使用了httpcfg,如您提供的链接中所描述的那样,告诉IIS仅在xx.xx.xx.4地址上进行侦听。 - palehorse
问题在于,只要我们使用wsHttpBinding,WCF服务也会使用xx.xx.xx.4地址,而不是配置文件中指定的xx.xx.xx.9地址。 - palehorse
更改为netTcpBinding会导致服务绑定到正确的xx.xx.xx.9地址;然而,我们希望使用wsHttpBinding,因为非WCF客户端需要使用此服务。 - palehorse

1

0

0

再提供一条信息。如果我们将绑定更改为使用NetTcp而不是WsHttp,则会在端口80上绑定到正确的地址。将其改回WsHttp后,它又会返回到错误的IP地址。


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设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接