Hosting Mehrere TCP-WCF-service-Endpunkte auf einem Port
Ich bin hosting 3 WCF-Diensten in windows services.Jedes WCF-Dienst enthält Mehrere Endpunkte. Jetzt bin ich host alle meine Endpunkte thru TCP-Bindung auf verschiedenen ports.
Gibt es eine Möglichkeit als host für alle diese Endpunkte von verschiedenen wcf-services auf dem gleichen port?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist sicher! Sie können die Net.TCP Port Sharing service.
Net.TCP-Port-Sharing auf MSDN
Ich habe gerade mal angeschaut, aus Neugier. Das Verhalten habe ich entdeckt, scheint so seltsam, dass ich fast nicht wollen, um es hier zu setzen. Aber es funktionierte in meinem Fall, so ist es vielleicht das gleiche tun für Sie:
Ich bin immer der AddressAlreadyInUseException, wenn ich versuche, um host-2-Dienste (D. H., 2 separate ServiceHost-Instanzen) auf dem gleichen Netz.tcp-port mit
portSharingEnabled="True"
Satz auf die netTcpBinding für beide. Das geschieht mit oder ohne Netz.Tcp-Port-Sharing-Dienst ausgeführt wird. Die exception wird geworfen, selbst wenn ich nur starten Sie die Dienste (und ich überprüft übernetstat
, dass es keinen anderen Hörer, der auf dem gleichen port auf der Maschine, plus, ich lief die app mit erhöhten rechten).Nun, die lustige Sache ist, die AddressAlreadyInUseException wird nicht ausgelöst, wenn ich PortSharingEnabled = False, und doch beide Dienste sind voll funktionsfähig!! Wieder einmal, mit oder ohne Port-Freigabe-Dienst ausgeführt wird. Ich konnte auch erfolgreich eine Verbindung zu diesen Diensten von einem anderen Rechner aus.
Eine wichtige Notiz zu machen aber, ist, dass diese nur gilt, wenn die services gehostet werden, innerhalb des GLEICHEN PROZESSES! Es tut sprengen, wenn ich versuche, starten Sie eine andere Instanz der app, die hören auf dem gleichen port, aber eine andere Basis-Adresse. Aber ich nehme an, Sie veranstalten diese 3 WCF-Dienste innerhalb der gleichen Windows-Dienst?
So, auch wenn es scheint nicht richtig, meine Antwort wäre deaktivieren
PortSharingEnabled
und sehen, ob es funktioniert mit verschiedenen BaseAddresses auf den gleichen port (vorausgesetzt Sie sind alle im selben Prozess).PortSharingEnabled
. Oder ist das nicht das, was du nach?Soweit ich weiß, haben Sie nicht nur die zum aktivieren der port-Freigabe auf die Konfiguration (oder per code), müssen Sie auch manuell starten Sie den Windows-Port Sharing service.
Das ist der Grund, warum ich (mit ähnlichem problem) nicht verwenden möchten, port-Freigabe, um es einfacher für die Bereitstellung, anstatt Sie zu Chaos mit anderen Dingen, die der Benutzer möglicherweise nicht wissen.