我们有一个WCF服务与多个客户到计划业务之间的客户。它的工作的伟大XP。迁移到windows7资,我只能连接一个客户服务器上的一样的机器。在这一点上,我想这件事情做IPv6,但我难以如何继续。

客户在试图连接以远程服务器提供以下例外:

系统。ServiceModel.EndpointNotFoundException:无法连接到网。tcp://10.7.11.14:18297/zetec/服务/SchedulerService/调度程序。连接尝试会持续一个时间跨度00:00:21.0042014.TCP错误代码10060:尝试连接失败,因为连接方没有作出适当的反应之后的一段时间,或建立连接失败,因为连接主机没有回应10.7.11.14:18297.--->系统。网。插座。异常:尝试连接失败,因为连接方没有作出适当的反应之后的一段时间,或建立连接失败,因为连接主机没有回应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();

我已经检查了我的防火墙有关的十几次,但我猜可以有什么我丢失。试图禁止窗户的防火墙。我试图改变localhost我ipv4address要尽量保持距离ipv6,我已经试图消除任何反ipv6代码。

不知道,如果它意味着什么,但是:

Microsoft Telnet>开放10.7.11.14 18297
连接到10.7.11.14...能不能打开连接主机、在港口18297:连接失败

Telnet测试不幸的是,似乎并不是关键。我已经成功地连接到我的服务的港口从localhost和远程计算机服务时运行,但我的客户没有工作,从远程计算机。

看起来像连接到本地并不总是得到保证。桌面(windows7资/32)的工作,笔记本电脑(windows7资/64)没有工作。其他windows7资/64框做的工作。也许是由于多个nic的笔记本电脑?也没有解释失败的连接在测试人员'系统。

我设置了两个windows7资机IPv6全面禁止(使用0xffffffff为在 http://support.microsoft.com/kb/929852 ).没有任何帮助。

有帮助吗?

解决方案 2

我没有时间回去测试一下是否是结合的帮助,我收到ligos或者没有,但主要的解决似乎是增加SMSvcHost.exe 到例外的窗户的防火墙。

谢谢你的帮助,ligos.我正准备放弃,直到你回答我的问题。

说明增加网。tcp到windows防火墙:

  1. 去服务,找到网。TCP port共享服务,并且双击。刷卡的路径可执行的(不用担心,如果它不是所有屏幕上,刷卡的行动应该滚过来)和复制(ctrl-c)
  2. 去你的防火墙和增加一个新的程序允许通过窗户的防火墙。粘贴在路径从服务和打确定。

其他提示

东西不右看看你的主基地的地址,然后终点地址。其中有一个明确的端口基准,其他没有。通常当使用基地址使用相对URL在端点地址。

我想不出为什么会是这样,与IPv6相关的,因为没有错误消息提到IPv6地址。

也许禁用Net.Tcp端口共享选项后再试。如果没有端口共享,你应该能够confim使用telnet像你这样的连接。

另外,如何在你的服务在Win7托管?在IIS7或自我在Windows服务托管?在服务托管它可能需要一些超越权限在防火墙上打开端口(比如你有时必须托管在Win XP中的HTTP一个窗口服务做)要授予你的exe文件。

对不起,我有急事,不能查询网址这些。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top