我的WCF服务存在一些问题。 我目前正在开发一个客户端/服务器聊天应用程序,无法远程访问服务器。 本地工作得很好,但是当我尝试远程连接它(从不同网络中的另一台计算机)时,我得到了
TCP错误代码10060:连接尝试失败,因为 连接方在一段时间后没有正确回应,或者 建立的连接失败,因为连接的主机失败了 回应IP-Adress:3100
如果我尝试通过外部IP地址连接到自己,我会
TCP错误代码10061:由于目标无法建立连接 机器主动拒绝了它
我的端口(3100)在我的路由器中打开,防火墙已禁用并启用了端口共享。
服务器
svh = new ServiceHost(typeof(ServiceAssembly.ServiceImplementation));
NetTcpBinding tcpBinding = new NetTcpBinding();
tcpBinding.MaxConnections = 100;
tcpBinding.MaxBufferPoolSize = (int)4096;
tcpBinding.MaxBufferSize = 4096;
tcpBinding.MaxReceivedMessageSize = (int)4096;
tcpBinding.TransactionFlow = false;
tcpBinding.Security.Transport.ProtectionLevel =
System.Net.Security.ProtectionLevel.EncryptAndSign;
tcpBinding.Security.Transport.ClientCredentialType =
TcpClientCredentialType.Windows;
tcpBinding.Security.Mode = SecurityMode.None;
svh.AddServiceEndpoint(
typeof(ServiceAssembly.IChat),
tcpBinding,
"net.tcp://localhost:3100/MyService");
SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
Console.WriteLine("Starting server...");
try
{
svh.Open();
}
catch (Exception e)
{
Console.WriteLine("Error: " + e.Message);
}
客户端:
public string m_ipAdress = "XX.XXX.XXX.XXX";
string m_port = "3100";
DuplexChannelFactory<IChat> scf;
IChat s;
private void login_btn_Click(object sender, RoutedEventArgs e)
{
Callback callback = new Callback();
InstanceContext context = new InstanceContext(callback);
NetTcpBinding tcpBinding = new NetTcpBinding();
tcpBinding.MaxConnections = 100;
tcpBinding.MaxBufferPoolSize = (int)4096;
tcpBinding.MaxBufferSize = 4096;
tcpBinding.MaxReceivedMessageSize = (int)4096;
tcpBinding.TransactionFlow = false;
tcpBinding.Security.Transport.ProtectionLevel =
System.Net.Security.ProtectionLevel.EncryptAndSign;
tcpBinding.Security.Transport.ClientCredentialType =
TcpClientCredentialType.Windows;
tcpBinding.Security.Mode = SecurityMode.None;
scf = new DuplexChannelFactory<IChat>(context, tcpBinding,
"net.tcp://" + m_ipAdress + ":" + m_port + "/MyService");
s = scf.CreateChannel();
try
{
s.Connect();
}
catch (Exception ex)
{
MessageBox.Show("ERROR: " + ex.Message);
}
}
在s.Connect()上我的程序挂起,我收到TCP错误。这是对服务器的第一次调用。
我搜索并搜索了答案,但没有任何帮助...... 在Windows 10上托管服务器。 如果我需要添加任何内容,请告诉我。
感谢。
答案 0 :(得分:1)
找出导致此问题的原因。 我一直在使用localhost作为我的服务器端点地址。将其更改为我的networkadapters本地IP(192.168.1.150),一切正常。