У нас есть служба WCF с несколькими клиентами для планирования операций среди клиентов.Он отлично работал на XP.Переходя на win7, я могу подключить клиента только к серверу на той же машине.На данный момент я думаю, что это как-то связано с IPv6, но я озадачен тем, как действовать дальше.
Клиент, пытающийся подключиться к удаленному серверу, выдает следующее исключение:
System.ServiceModel.EndpointNotFoundException: Не удалось подключиться к net.tcp: //10.7.11.14: 18297 /Zetec / Услуги / 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
Подключение к 10.7.11.14 ... Не удалось открыть подключение кхост, через порт 18297: Ошибка подключения
Тест telnet, к сожалению, не является ключевым.Я успешно подключился к порту моей службы с localhost и удаленного компьютера, когда служба запущена, но мой клиент не работал с удаленного компьютера.
Похоже, подключение к localhost не всегда гарантируется.Рабочий стол (win7 / 32) работает, ноутбук (win7 / 64) не работает.Другие win7 / 64 коробки работают, хотя.Возможно, из-за нескольких ник на ноутбуке?Также не объясняются сбои подключения в системах тестеров.
Я настроил две машины win7 с полностью отключенным IPv6 (используя 0xffffffff, как в http://support.microsoft.com/kb/929852).Без помощи.