我是 WCF 新手,遇到了 NET.TCP 连接问题。
这是设置。
服务器:Windows 8 专业版。
自托管 WCF 服务,使用带有 SecurityMode.None 的 NetTcpBinding:
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 上的不同机器,一切都很好。从 LAN 外部(在我的办公室机器上),我得到:
System.ServiceModel.EndpointNotFoundException:无法连接到 net.tcp://xx.xxx.xx.xx:8085/MyWPFServiceHost。连接尝试持续了 00:00:01.1241124 的时间跨度。TCP错误代码10061:由于目标机器主动拒绝,无法建立连接。
如果我完全禁用 Win8 防火墙,也会出现同样的错误。
如果我在家中的 Windows Server 2008 机器上运行该服务的副本,我可以从任何地方正常连接,包括通过 Internet。
拜托,在这三天后,我无处可去。还请记住,这是自托管的,而不是 IIS 托管的。非常感谢您提供任何见解或从哪里开始寻找。我已确保打开此 10061 错误通常提到的所有服务。