TCP Erreur (10060) lorsque vous essayez de vous connecter à distance service WCF
J'ai un simple service WCF. Pour diverses raisons, tous les config est effectuée par programme plutôt que dans le format xml. Le Service est auto-hébergé. Quand je lance l'hôte et le client sur ma machine locale, il fonctionne très bien. Il est également efficace lorsque je déplace l'hôte à une autre machine sur mon réseau local. Cependant, lorsque j'essaie d'obtenir de l'hôte sur l'ordinateur en allant à l'extérieur de mon réseau local (c'est à dire à l'aide de ma WAN du routeur et l'adresse au lieu de le réseau local de l'adresse), il ne fonctionne pas et je reçois le message d'erreur ci-dessous. Je suis la redirection de port 8100 sur mon routeur à l'ordinateur hôte de service de la machine. J'ai aussi effacé le port sur le pare-feu d'hôte, ainsi que d'essayé de retourner le pare-feu désactiver complètement. Pas de joie à la fois.
Je suis en utilisant le protocole TCP, sans aucune sécurité pour garder les choses simples pour l'instant. Quelqu'un peut-il suggérer ce qui pourrait être à l'origine de ce comportement? Je vous remercie.
(Note: j'ai masqué le WAN et le LAN de l'adresse dans le code ci-dessous.)
Ma classe client:
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<IService>.CreateChannel(
binding,
endpointAddress);
}
public bool report(Payload payload)
{
return proxy.report(payload);
}
}
Mon hôte classe:
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();
Mon reliure:
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;
}
}
L'erreur que j'obtiens lorsque le client essaie de se connecter:
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.
[MODIFIER]
Après avoir lutté avec cela pendant des jours, j'ai enfin réussi à retracer la question à un bouclage problème avec mon routeur. Bien que je n'ai toujours pas compris pourquoi, ce qui se passe est que, bien que le routeur est configuré en avant le port, à l'appel du client n'est pas de faire à l'hôte lorsque j'utilise l'adresse WAN. Si c'est bloqué "sortir" ou "venir dans" à travers le routeur est encore un mystère, mais quand je lance le client sur un autre ordinateur physiquement en dehors de mon réseau local il fonctionne très bien
Vous devez vous connecter pour publier un commentaire.
Le paramètre de proxy que vous souhaitez ajouter dans le fichier de config est comme ci-dessous:
[plus]
Service WCF problème de connexion - peut-être que la sécurité?
[/plus]
Cela fonctionne pour mes services: