3

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

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

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

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

这是设置基本地址的配置部分。绑定的最终是 0.4 而不是 0.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>
  • 是否还有其他需要设置的配置?
  • 是否有工具可以帮助追踪绑定到错误地址的位置?
4

6 回答 6

1

您的 WCF 配置对我来说看起来不错。这可能是您的 NIC 卡的绑定顺序问题。确保地址正确的网卡在前。这是一篇讨论如何设置和查看网卡绑定顺序的文章:

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

于 2008-09-30T19:47:36.847 回答
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

希望这可以帮助。

于 2008-10-01T10:44:08.017 回答
1

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

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

希望这有帮助。

于 2009-04-29T14:15:24.410 回答
0

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

于 2008-09-30T23:26:32.810 回答
0

More information: I removed the xx.xx.xx.4 IP address from the NIC altogether and turned off IIS. Now when I try to start the service it fails and I find this in the System event log.

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.

My configuration file still has the xx.xx.xx.9 baseAddress setting.

于 2008-09-30T21:03:15.853 回答
0

BaseAddress 被忽略。您需要在 IIS 下设置主机头

于 2010-10-05T10:42:11.833 回答