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

InformationsquelleAutor Gadzooks34 | 2011-12-02