Question

Comment configurer WCF utiliser simplement un de deux points de terminaison disponibles?

Je besoin de deux ports TCP (et donc en utilisant netTcpBinding). L'hôte de service doit d'abord essayer de se lier au premier port. Si elle échoue, et que si elle échoue, il devrait essayer de se lier au second port.

EDIT

Je connais peut être achived programatically, mais mon intention de le faire déclarative (en utilisant des fichiers .config uniquement).

Était-ce utile?

La solution

L'adresse de point final, y compris le numéro de port, peut être définie dans le code à tout moment dans le processus avant d'ouvrir une connexion en utilisant votre objet proxy. Ainsi, vous pouvez définir l'adresse et puis testez la connexion, et si elle échoue, essayez l'autre port. Voici un code qui illustre mon point je l'espère.

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

Autres conseils

Du côté du serveur, il n'y a aucun problème d'exposer un service avec deux liaisons.

Mais du côté client, vous obtiendrez une erreur de contrat en double (ou des mots à cet effet)

Une façon de le faire est de créer deux interfaces (contrats) qui sont identiques à l'exception du nom.

Vous avez une seule copie de la mise en œuvre, chaque service hérite de cette mise en œuvre.

Vous avez alors deux services sur les différents ports, qui ont la même mise en œuvre / fonctionnalité.

Sur le client, vous devez alors programmer qu'il tente d'abord le premier port et si cela échoue, il tente la seconde.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top