2013-03-15 2 views
6

Je suis confus quant à la raison pour laquelle quelque chose fonctionne. Je configure un service WCF comme ceci:Point de terminaison du service WCF localhost confusion

<services> 
    <service name="ClientCommand" behaviorConfiguration="SomeServiceBehavior"> 
    <endpoint contract="IClientCommand" binding="netTcpBinding" BindingConfiguration="TcpPort" address="net.tcp://localhost:1304" /> 
    </service> 
</services> 

Le BindingConfiguration et behaviorConfiguration sont très simple, il suffit de configurer des délais d'attente.

Dans mon exe, je démarre l'hôte comme ça.

_serverHost = new ServiceHost(type); // implementing IClientCommand 
_serverHost.Open(); 

Tout est très simple et cela fonctionne, je peux appeler ce service depuis un autre PC. Cependant, après avoir lu sur un problème différent (écoute sur les prises TCP), j'ai l'impression que cela ne devrait pas fonctionner. Comme je lie à localhost le service ne devrait pas être accessible depuis l'extérieur de l'ordinateur sur lequel il fonctionne?
J'ai vérifié netstat sur le PC et il s'est lié à l'adresse IP "0.0.0.0" au lieu de "127.0.0.1" expliquant pourquoi cela fonctionne à partir d'un autre pc.

Mais je ne comprends pas pourquoi ça passe de localhost à "0.0.0.0"?

+0

J'ai creusé un peu plus profond, seulement pour être plus confus. Si j'utilise 'net.tcp: // 127.0.0.1/service', il va effectivement se lier au loopback et il ne sera pas accessible depuis l'extérieur du pc. Cependant 'net.tcp: // localhost/service' se liera à 0.0.0.0 et sera accessible depuis l'extérieur du loopback. Pourquoi? – Greuntesop

Répondre

0

Net.tcp n'est pas limité à la communication sur une machine, peut-être que vous pensez sur net.pipe? Concernant 0.0.0.0: Comment le fichier hôte est-il défini sur la machine qui exécute le service? Here est un bon article sur WCF en général.

+0

Salut, je ne dis pas net.tcp est limité à la communication sur une machine. Je dis que si vous utilisez net.tcp: // localhost: ... il devrait être lié à l'adresse de bouclage et ne pas être accessible de l'extérieur du pc. Mais il est. – Greuntesop

Questions connexes