试图连接到远程WCF服务时,TCP错误(10060)
本文关键字:TCP 错误 10060 服务 连接 WCF | 更新日期: 2023-09-27 18:16:24
我有一个简单的WCF服务。由于各种原因,所有配置都是通过编程而不是xml完成的。服务是自托管的。当我在本地机器上运行主机和客户机时,效果非常好。当我将主机移动到LAN上的另一台机器上时,它也能很好地工作。然而,当我试图通过离开我的LAN(即使用我的路由器的WAN地址而不是本地LAN地址)到达任何一台机器上的主机时,它不起作用,我得到下面的错误。我am将路由器上的端口8100转发到业务主机。我还清除了主机防火墙上的端口,并尝试完全关闭防火墙。两者都不快乐。
我现在使用没有安全的TCP来保持事情简单。谁能告诉我是什么导致了这种行为?谢谢你!
(注意:我在下面的代码中隐藏了WAN和LAN地址)
客户端类:
public class TrackingClient : IService
{
protected readonly Binding binding;
protected readonly EndpointAddress endpointAddress;
IService proxy;
public TrackingClient()
{
this.binding = new TCPBinding();
this.endpointAddress = new EndpointAddress("net.tcp://WAN_IP:8100/Tracking");
proxy = ChannelFactory<IService>.CreateChannel(
binding,
endpointAddress);
}
public bool report(Payload payload)
{
return proxy.report(payload);
}
}
主机类:
ServiceHost host = new ServiceHost(typeof(Service));
host.AddServiceEndpoint(
typeof(IService),
new TrackingComm.TCPBinding(),
"net.tcp://LAN_IP:8100/Tracking");
host.Open();
Console.WriteLine("=== TRACKING HOST ===");
Console.ReadLine();
host.Close();
我的绑定:
public class TCPBinding : NetTcpBinding
{
public TCPBinding()
{
Security.Mode = SecurityMode.None;
Security.Transport.ClientCredentialType = TcpClientCredentialType.None;
Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.None;
Security.Message.ClientCredentialType = MessageCredentialType.None;
}
}
当客户端试图连接时,我得到的错误:
Could not connect to net.tcp://WAN_IP:8100/. The connection attempt lasted for a time span of 00:00:21.0772055. TCP error code 10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond WAN_IP:8100.
[编辑]
在与这个问题斗争了几天之后,我终于设法追踪到我的路由器的环回问题。虽然我还没有弄清楚为什么,发生的事情是,虽然路由器是在端口前设置的,但当我使用WAN地址时,来自客户端的呼叫并没有使其到达主机。它是否被阻止"出去"或"进来"通过路由器仍然是一个谜,但当我在LAN外的另一台计算机上运行客户端时,它工作得很好
您想要添加到配置文件中的代理设置如下:
<system.net>
<defaultProxy>
<proxy
usesystemdefault = "false"
proxyaddress="http://address:port"
bypassonlocal="false"
/>
</defaultProxy>
</system.net>
(除了)WCF服务连接问题——可能是安全问题?
[/除了]
这适用于我的服务:
<system.net>
<defaultProxy>
<proxy autoDetect="True"/>
</defaultProxy>
</system.net>