我们在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>
答案 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。