我是WCF的新手并且遇到了NET.TCP连接问题。
这是设置。
服务器:Windows 8专业版。
自托管WCF服务,使用NetTcpBinding和SecurityMode.None:
try
{
_serviceHost = new ServiceHost(typeof(MouseTest));
_serviceHost.AddServiceEndpoint(typeof(IMouseTest), new NetTcpBinding(SecurityMode.None),
"net.tcp://localhost:" + MyNetwork.Default.Port.ToString() + "/MyWPFServiceHost");
_serviceHost.CloseTimeout = new TimeSpan(0,0,5);
_serviceHost.Open();
AddMessage("net.tcp open");
}
catch (CommunicationException ce)
{
// MUST open visual studio as administrator!!!!! (Not this app, but actual VS2010.
Console.WriteLine("An exception occurred: {0}", ce.Message);
_serviceHost.Abort();
AddMessage(ce.Message);
}
catch (Exception ex)
{
AddMessage(ex.Message);
}
客户端机器(各种类型):
private void openTCPServiceButton_Click(object sender, RoutedEventArgs e)
{
String endpointAddress = "net.tcp://XX.XXX.XX.XX:" + MyNetwork.Default.Port.ToString() + "/MyWPFServiceHost";
if (channelFactory == null)
channelFactory = new ChannelFactory<IMouseTest>(new NetTcpBinding(SecurityMode.None),
new EndpointAddress(endpointAddress));
SendToListBox(channelFactory.Endpoint.Address.ToString());
try
{
proxy = channelFactory.CreateChannel();
proxy.StartRecording();
}
catch (Exception ex)
{
AddMessageThreadSafe(ex.GetType().ToString() + ": " + ex.Message);
}
}
该服务托管在我的家用机器上,即Windows 8机箱。当我从同一台机器连接时,一切都很好。从同一局域网上的不同机器,一切都很好。从LAN外部(在我的办公室机器上),我得到:
System.ServiceModel.EndpointNotFoundException:无法连接到 的net.tcp://xx.xxx.xx.xx:8085 / MyWPFServiceHost。连接尝试 持续了00:00:01.1241124的时间跨度。 TCP错误代码10061:否 可以建立连接,因为目标机器主动拒绝 它
如果我完全禁用Win8防火墙,则会出现相同的错误。
如果我在家中的Windows Server 2008计算机上运行该服务的副本,我可以从任何地方连接,包括通过互联网。
请在3天之后我无处可去。还请记住,这是SELF-HOSTED而不是IIS托管。非常感谢任何见解或从哪里开始寻找。我确保打开了这个10061错误中通常提到的所有服务。