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).

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top