我是 WCF 的新手,所以我真的需要你的帮助。
我有两个使用 WCF 的程序。如果它们在一台计算机上运行并且客户端使用地址net.tcp:\Localhost:8001\MyService连接到服务器(例如地址为 192.168.1.1),一切正常。但是,当我将客户端的地址更改为net.tcp:\192.168.1.1:8001\MyService时,我得到了 system.timeoutexception,因为客户端无法连接服务器。
感谢帮助。
我是 WCF 的新手,所以我真的需要你的帮助。
我有两个使用 WCF 的程序。如果它们在一台计算机上运行并且客户端使用地址net.tcp:\Localhost:8001\MyService连接到服务器(例如地址为 192.168.1.1),一切正常。但是,当我将客户端的地址更改为net.tcp:\192.168.1.1:8001\MyService时,我得到了 system.timeoutexception,因为客户端无法连接服务器。
感谢帮助。
您可能需要允许外部访问防火墙中的端口。
只要您从localhost
to 进行通信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
网络。
请检查“192.168.1.1”是否包含在您的“主机”文件中。试一试。
主机文件可以在“C:\Windows\System32\drivers\etc”中找到