WCF服务端点localhost混淆

时间:2013-03-15 09:20:45

标签: .net wcf localhost endpoint

我很困惑为什么有些东西有效。我正在配置像这样的wcf服务:

<services>
  <service name="ClientCommand" behaviorConfiguration="SomeServiceBehavior">
    <endpoint contract="IClientCommand" binding="netTcpBinding" BindingConfiguration="TcpPort" address="net.tcp://localhost:1304" />
  </service>
</services>

BindingConfiguration和behaviorConfiguration非常简单,只需配置一些超时。

在我的exe中,我像这样启动主机。

_serverHost = new ServiceHost(type); // implementing IClientCommand
_serverHost.Open();

这一切都非常简单且有效,我可以从不同的电脑上调用此服务。但是,在阅读了另一个问题(收听tcp套接字)后,我得到的印象是它不应该工作。当我绑定到 localhost 时,不应该从正在运行的电脑外部访问该服务?
我在电脑上检查了netstat,它确实绑定到了ip地址“0.0.0.0”而不是“127.0.0.1”,解释了为什么它可以从另一台电脑上运行。

但我不明白为什么它从localhost变为“0.0.0.0”?

1 个答案:

答案 0 :(得分:0)

Net.tcp不限于一台机器上的通信,也许你正在考虑net.pipe?关于0.0.0.0:如何在运行服务的机器上定义主机文件? Here是关于WCF的一篇很好的文章。