3

我是 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 错误通常提到的所有服务。

4

0 回答 0