Ich bin verwirrt, warum etwas funktioniert. Ich bin ein WCF-Dienst wie folgt konfigurieren:WCF Service Endpunkt localhost Verwirrung
<services>
<service name="ClientCommand" behaviorConfiguration="SomeServiceBehavior">
<endpoint contract="IClientCommand" binding="netTcpBinding" BindingConfiguration="TcpPort" address="net.tcp://localhost:1304" />
</service>
</services>
Die BindingConfiguration und behaviorConfiguration sind sehr einfach, nur einige Timeouts konfigurieren.
In meiner exe starte ich den Host so.
_serverHost = new ServiceHost(type); // implementing IClientCommand
_serverHost.Open();
Es ist alles ziemlich einfach und es funktioniert, kann ich diesen Dienst von einem anderen PC anrufen. Nach dem Lesen eines anderen Problems (tcp-Sockets hören) habe ich jedoch den Eindruck, dass es nicht funktionieren sollte. Wie bin ich verbindlich an localhost der Service sollte nicht zugänglich sein von außerhalb des PCs läuft es auf?
Ich überprüfte Netstat auf dem PC und es gebunden an IP-Adresse "0.0.0.0" statt "127.0.0.1" zu erklären, warum es von einem anderen PC funktioniert.
Aber ich verstehe nicht, warum es von localhost zu "0.0.0.0" geht?
Ich grub ein wenig tiefer, nur um mehr verwirrt zu werden. Wenn ich 'net.tcp: // 127.0.0.1/service' verwende, wird es tatsächlich an den Loopback gebunden und es ist nicht von außerhalb des PCs erreichbar. "Net.tcp: // localhost/service" wird jedoch an 0.0.0.0 gebunden und von außerhalb des Loopbacks erreichbar sein. Warum? – Greuntesop