-1

我是 WCF 的新手,所以我真的需要你的帮助。

我有两个使用 WCF 的程序。如果它们在一台计算机上运行并且客户端使用地址net.tcp:\Localhost:8001\MyService连接到服务器(例如地址为 192.168.1.1),一切正常。但是,当我将客户端的地址更改为net.tcp:\192.168.1.1:8001\MyService时,我得到了 system.timeoutexception,因为客户端无法连接服务器。

感谢帮助。

4

2 回答 2

1

您可能需要允许外部访问防火墙中的端口。

只要您从localhostto 进行通信localhost,防火墙就不会发挥作用,因为这些请求由环回适配器处理。

但是当localhost与机器 IP 地址通信时,您正在发出由防火墙处理的网络请求(即使您在物理上仍在同一台机器上)。

顺便说一句:对于服务器端,无论您是使用端点启动 WCF 服务localhost还是192.168.1.1.

编辑
我写道,不管你听localhost还是听都没关系192.168.1.1——只有当你只有一个网络适配器可用时,这才是正确的。

只要有两个或更多网卡(例如:无线 LAN 已打开并且您通过电缆连接),localhost或者0.0.0.0将使服务在任何适配器上侦听。使用192.168.1.1将使服务仅侦听该 IP 地址上的连接。

了解这一点很重要,尤其是在不同的网络适配器成为不同(子)网络的成员的情况下。

例如:一个适配器连接到192.168.1网络,另一个适配器连接到192.168.2网络。如果您的服务正在侦听,localhost或者0.0.0.0它可以从两个网络访问。如果它只监听192.168.1.1,它将无法用于192.168.2网络。

于 2012-10-25T08:37:33.167 回答
-2

请检查“192.168.1.1”是否包含在您的“主机”文件中。试一试。

主机文件可以在“C:\Windows\System32\drivers\etc”中找到

于 2012-10-25T08:27:25.393 回答