У меня есть простой сервис WCF. По разным причинам вся конфигурация выполняется программно, а не в XML. Сервис самостоятельно. Когда я запускаю хост и клиент на своей локальной машине, он отлично работает. Это также прекрасно работает, когда я перемещаю хоста на другую машину на моей локальной сети. Однако, когда я пытаюсь добраться до хоста на любой машине, выходя за пределы моей локальной сети (то есть, используя WAN -адрес моего маршрутизатора вместо локального адреса локальной сети), он не работает, и я получаю ошибку ниже. Я пересылаю порт 8100 на моем маршрутизаторе на хост -машине службы. Я также очистил порт на принимающем брандмауэре, а также попытался полностью отключить брандмауэр. Нет радости в обоих. < /p>
Я использую TCP без безопасности, чтобы все было простым. Кто -нибудь может предложить, что может вызвать такое поведение? Спасибо. < /p>
(Примечание: я замаскировал адрес WAN и LAN в коде ниже.)public class TrackingClient : IService
{
protected readonly Binding binding;
protected readonly EndpointAddress endpointAddress;
IService proxy;
public TrackingClient()
{
this.binding = new TCPBinding();
this.endpointAddress = new EndpointAddress("net.tcp://WAN_IP:8100/Tracking");
proxy = ChannelFactory.CreateChannel(
binding,
endpointAddress);
}
public bool report(Payload payload)
{
return proxy.report(payload);
}
}
< /code>
мой класс хоста: < /p>
ServiceHost host = new ServiceHost(typeof(Service));
host.AddServiceEndpoint(
typeof(IService),
new TrackingComm.TCPBinding(),
"net.tcp://LAN_IP:8100/Tracking");
host.Open();
Console.WriteLine("=== TRACKING HOST ===");
Console.ReadLine();
host.Close();
< /code>
my inding: < /p>
public class TCPBinding : NetTcpBinding
{
public TCPBinding()
{
Security.Mode = SecurityMode.None;
Security.Transport.ClientCredentialType = TcpClientCredentialType.None;
Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.None;
Security.Message.ClientCredentialType = MessageCredentialType.None;
}
}
< /code>
Ошибка, которую я получаю, когда клиент пытается подключиться: < /p>
Could not connect to net.tcp://WAN_IP:8100/. The connection attempt lasted for a time span of 00:00:21.0772055. TCP error code 10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond WAN_IP:8100.
< /code>
[edit] < /strong> < /p>
После борьбы с этим в течение нескольких дней мне наконец -то удалось отслеживать проблему с проблемой Loopback с моим маршрутизатором. Хотя я до сих пор не понял, почему, то, что происходит, хотя маршрутизатор настроен на порт, вызов от клиента не попадает на хост, когда я использую WAN -адрес. Будь то заблокировано «выходить на улицу» или «войти» через маршрутизатор, все еще загадка, но когда я запускаю клиента на другом компьюте>
Подробнее здесь: https://stackoverflow.com/questions/835 ... cf-service
Ошибка TCP (10060) при попытке подключиться к удаленной службе WCF ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение