我们有一个带有多个客户端的 WCF 服务来安排客户端之间的操作。它在 XP 上运行良好。转到win7,我只能将客户端连接到同一台机器上的服务器。在这一点上,我认为这与 IPv6 有关,但我不知道如何继续。
尝试连接到远程服务器的客户端会出现以下异常:
System.ServiceModel.EndpointNotFoundException:无法连接到 net.tcp://10.7.11.14:18297/zetec/Service/SchedulerService/Scheduler。连接尝试持续了 00:00:21.0042014 的时间跨度。TCP错误码10060:连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应10.7.11.14:18297。---> System.Net.Sockets.SocketException: 连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立连接失败,因为连接主机没有响应 10.7.11.14:18297
服务配置如下:
<system.serviceModel>
<services>
<service
name="SchedulerService"
behaviorConfiguration="SchedulerServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost/zetec/Service/SchedulerService"/>
</baseAddresses>
</host>
<endpoint address="net.tcp://localhost:18297/zetec/Service/SchedulerService/Scheduler"
binding="netTcpBinding"
bindingConfiguration = "ConfigBindingNetTcp"
contract="IScheduler" />
<endpoint address="net.tcp://localhost:18297/zetec/Service/SchedulerService/Scheduler"
binding="netTcpBinding"
bindingConfiguration = "ConfigBindingNetTcp"
contract="IProcessingNodeControl" />
</service>
</services>
<bindings>
<netTcpBinding>
<binding name = "ConfigBindingNetTcp" portSharingEnabled="True">
<security mode="None"/>
</binding>
</netTcpBinding >
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="SchedulerServiceBehavior">
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceThrottling maxConcurrentSessions="100"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
客户端连接如下:
String endPoint = "net.tcp://" + GetIPV4Address(m_SchedulerHostAddress) + ":" + m_SchedulerHostPort.ToString(CultureInfo.InvariantCulture) + "/zetec/Service/SchedulerService/Scheduler";
NetTcpBinding binding = new NetTcpBinding();
binding.Security.Mode = SecurityMode.None;
m_Channel = new DuplexChannelFactory<IProcessingNodeControl>(this, binding, endPoint);
m_IProcessingNodeControl = m_Channel.CreateChannel();
我检查了我的防火墙大约十几次,但我想我可能遗漏了一些东西。试过禁用windows防火墙。我尝试将 localhost 更改为我的 ipv4 地址以尝试远离 ipv6,我尝试删除任何反 ipv6 代码。
不知道这是否意味着什么,但是:
Microsoft Telnet> open 10.7.11.14 18297
Connecting To 10.7.11.14...无法在端口 18297 上打开与主机的连接:连接失败
不幸的是,telnet 测试似乎不是关键。当服务运行时,我已经成功地从本地主机和远程计算机连接到我的服务端口,但是我的客户端无法从远程计算机工作。
似乎并不总是保证连接到本地主机。台式机 (win7/32) 工作,笔记本电脑 (win7/64) 不工作。其他 win7/64 盒子虽然可以工作。也许是由于笔记本电脑上有多个网卡?也没有解释在测试人员的系统上连接失败。
我设置了两台完全禁用 IPv6 的 win7 机器(使用http://support.microsoft.com/kb/929852中的 0xffffffff )。没有帮助。