我不明白某些东西是如何工作的。我正在这样配置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套接字)后,我得出的印象是它不应该工作。因为我绑定到本地主机,所以该服务不应该从运行它的PC之外的任何地方访问。
我在这台电脑上检查了netstat,并且它绑定到了IP地址“0.0.0.0”而不是“127.0.0.1”,这就解释了为什么可以从另一台电脑访问。
但我不明白为什么它会从localhost变成“0.0.0.0”?
net.tcp://127.0.0.1/service
,它确实会绑定到回环地址,从外部无法访问。但是net.tcp://localhost/service
会绑定到 0.0.0.0 并且可以从回环之外访问。为什么呢? - Greuntesop