我是WCF的新手,所以我真的需要你的帮助。
我有两个使用WCF的程序。 如果它们在一台计算机上运行,并且客户端使用地址 net.tcp:\ Localhost:8001 \ MyService 连接到服务器(例如,地址为192.168.1.1),一切正常。 但是,当我将客户端的地址更改为 net.tcp:\ 192.168.1.1:8001 \ MyService 时,我收到system.timeoutexception,因为客户端无法连接服务器。
感谢您的帮助。
答案 0 :(得分:1)
您可能需要允许外部访问防火墙中的端口。
只要您从localhost
到localhost
进行通信,防火墙就不起作用,因为这些请求由环回适配器处理。
但是当从localhost
与机器IP地址进行通信时,您正在发出由防火墙处理的网络请求(即使您仍然在物理上位于同一台计算机上)。
顺便说一句:对于服务器端,无论您是使用端点localhost
还是192.168.1.1
启动WCF服务都无关紧要。
修改强>
我写道,无论你是在localhost
还是192.168.1.1
上听,都是如此 - 只有当你只有一个网络适配器可用时才会这样。
只要有两个或更多网卡(例如:无线局域网已打开并且您通过电缆连接),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
网络。
答案 1 :(得分:-2)
请检查“hosts”文件中是否包含“192.168.1.1”。试一试。
主机文件可在“C:\ Windows \ System32 \ drivers \ etc”
中找到