2012-04-04 6 views
0

Ich habe einen Stapel WCF-Dienste auf einem virtuellen Windows 2008 R2 Standard-Server installiert. siehe Beispiel unten Viele der Endpunkte sind an lokalen Host gebunden:Wie werden an Port gebundene Dienste ausgeführt, wenn sie LOCALHOST verwenden und 2 IP-Adressen verwendet werden?


Endpunktadresse = "net.tcp: // localhost: 8738/Dienstleistungen/Service"


Dies funktioniert im Moment da nur einzelne lokale IP (192.168.20.10) an die NIC gebunden ist.

Wenn ich hinzufügen, eine andere lokale IP-Adresse (192.168.20.11):

1) bedeutet localhost Referenz des Service-Port auf beiden IP-Adressen veröffentlicht wird?

2) Wenn nicht, wie entscheidet das Betriebssystem welche IP?

Danke Scott

Antwort

1

localhost zum loopback addressIPv4: 127.0.0.1 oder IPv6 ::1 bezieht.

Wenn ein Dienst an eine Loopback-Adresse gebunden ist, ist er nur für diesen Host verfügbar. Ein Anwendungsfall ist für Webservice-Komponenten, die nur durch den HTTP-Daemon per Proxy verfügbar gemacht werden. Das Hinzufügen von IP-Adressen zu einer Schnittstelle macht keinen Unterschied für Dienste, die an localhost gebunden sind.

Wenn ein Dienst dem Netzwerk zur Verfügung gestellt werden soll, lautet die Bindung normalerweise *:portnumber. Dadurch werden alle IP-Adressen abgehört, sodass das Hinzufügen einer anderen IP zur Schnittstelle dazu führt, dass der Dienst auch unter der neuen IP-Adresse verfügbar ist.

+0

Danke für die Antwort. Das ist der Grund, warum ich verwirrt bin. Ich verstehe, dass localhost 127.0.0.1 ist und der Dienst an 127.0.0.1 gebunden ist, aber ich kann anscheinend von einem anderen Rechner aus eine Verbindung zu diesem Port herstellen. Wenn das, was du vorschlägst, wahr ist, wie ist das möglich? –

+0

Zum Beispiel hosten wir einen WCF-SMS-Dienst, eine Web-App von einem Webserver spricht mit ihm, aber die SMS-Dienstbindungen zeigen alle localhost an, in der Konfigurationsdatei ist keine IP-Adresse geschrieben. –

+0

Ich vermute, dass Ihr SMS-Dienst von einem anderen Dienst auf demselben Computer (Proxy) angezeigt wird. – MattH

1

Ich habe festgestellt, dass die Verwendung von etwas wie net.tcp://localhost:4512 wird nicht an die Loopback-Adresse wie erwartet gebunden, sondern stattdessen auf 0.0.0.0:4512 abhören und somit die Verbindung auf allen IP-Adressen akzeptieren.