Konfigurieren von WCF Verwendung eines von zwei Endpunkten
-
23-09-2019 - |
Frage
Wie WCF konfigurieren einfach zu verwenden ein von zwei Endpunkten verfügbar?
Ich brauche zwei TCP-Ports (und damit netTcpBinding
verwenden). Der Service-Host sollte zunächst versuchen, an den ersten Port zu binden. Schlägt dies fehl, und nur dann, wenn es fehlschlägt, sollte es versuchen, den zweit Port zu binden.
Bearbeiten
ich gewusst, dass es programmatisch achived werden kann, aber meine Absicht, es deklarativ zu tun (.config
Dateien mit nur).
Lösung
Die Endpunkt-Adresse, einschließlich der Port-Nummer, kann an einem beliebigen Stelle im Prozess im Code festgelegt werden, bevor Sie eine Verbindung mit Ihrem Proxy-Objekt öffnen. So können Sie die Adresse eingestellt und dann die Verbindung testen, und wenn es fehlschlägt, versuchen die anderen Port. Hier ist ein Code, der hoffentlich meinen Punkt zeigt.
Dim oProxy as New YourWCFServiceType()
oProxy.Endpoint.Address = New System.ServiceModel.EndpointAddress(New Uri("The address and port number you want to try first"))
Dim FirstBindingSucceeded as Boolean
Try
oProxy.Open()
FirstBindingSucceeded = True
Catch
End Try
If FirstBindingSucceeded = False Then
oProxy.Endpoint.Address = New System.ServiceModel.EndpointAddress(New Uri("The address and port number you want to try second"))
End If
oProxy.Open()
Andere Tipps
Auf der Serverseite gibt es kein Problem, einen Dienst mit zwei Bindungen ausgesetzt wird.
Aber auf der Client-Seite werden Sie einen doppelten Vertrags Fehler erhalten (oder Wörter in diesem Sinne)
Eine Möglichkeit, es zu tun ist, zwei Schnittstellen (Verträge) zu erstellen, die bis auf den Namen identisch sind.
Sie haben eine einzelne Kopie der Implementierung, jeder Dienst erbt von dieser Implementierung.
Sie haben dann zwei Dienste auf verschiedenen Ports, welche die gleiche Umsetzung / Funktionalität haben.
Auf dem Client Sie dann auf Programm benötigen, dass sie zuerst den ersten Port versucht, und dann, wenn das fehlschlägt er die zweite versucht.