Pregunta

Cómo configurar WCF para utilizar simplemente un de los dos extremos disponibles?

necesito dos puertos TCP (y por tanto utilizando netTcpBinding). El host de servicio debe en primer lugar tratar de obligar al primer puerto. Si falla, y sólo si se produce un error, se debe tratar de enlazar con el segundo puerto.

Editar

Me sabe que puede ser achived programáticamente, pero mi intención de hacerlo de forma declarativa (utilizando archivos .config solamente).

¿Fue útil?

Solución

La dirección de punto final, incluyendo el número de puerto, se puede configurar en el código en cualquier punto en el proceso antes de abrir una conexión utilizando el objeto proxy. Lo que puede establecer la dirección y luego probar la conexión, y si no funciona, pruebe el otro puerto. Aquí hay un código que se espera que ilustra mi punto.

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

Otros consejos

En el lado del servidor no hay ningún problema de exponer un servicio con dos enlaces.

Sin embargo, en el lado del cliente obtendrá un error de contrato duplicado (o algo por el estilo)

Una forma de hacerlo es crear dos interfaces (contratos) que son idénticos excepto por el nombre.

Usted tiene una sola copia de la aplicación, cada uno hereda de servicio de esta aplicación.

A continuación, tiene dos servicios en puertos diferentes, que tienen la misma aplicación / funcionalidad.

En el cliente de este caso es necesario el programa que intenta en primer lugar el primer puerto y luego, si este falla, intenta el segundo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top