2013-03-15 44 views
6

我很困惑,为什么有些东西有效。我配置WCF服务是这样的: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(); 

这一切都非常简单,它的工作原理,我可以从不同的PC调用此服务。然而,在阅读了另一个问题(在tcp套接字上侦听)之后,我觉得它应该不起作用。由于我绑定到本地主机该服务不应该从它运行的电脑外部访问?
我检查了电脑上的netstat,它确实绑定了IP地址“0.0.0.0”而不是“127.0.0.1”,解释了为什么它可以从另一台电脑上运行。

但我不明白为什么它从本地到“0.0.0.0”?

+0

我挖得更深一点,只是为了弄得更加困惑。如果我使用'net.tcp:// 127.0.0.1/service',它确实会绑定到环回,并且它不能从pc外部访问。然而,'net.tcp:// localhost/service'会绑定到0.0.0.0,并且可以从环回外部访问。为什么? – Greuntesop 2013-03-15 13:04:33

回答

0

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

+0

嗨,我并不是说net.tcp仅限于一台机器上的通信。我在说,如果你使用net.tcp:// localhost:...它应该被绑定到环回地址,并且不能从pc之外访问。但它是。 – Greuntesop 2013-03-15 12:04:17