Domanda

Come configurare WCF per utilizzare solo una di due punti finali disponibili?

Ho bisogno di due porte TCP (e quindi usando netTcpBinding). L'host servizio dovrebbe prima cercare di legarsi alla prima porta. Se fallisce, e solo se non riesce, si cerchi di associare alla seconda porta.

Modifica

ho conosciuto che possa essere achived programatically, ma la mia intenzione di farlo in modo dichiarativo (utilizzando i file .config solo).

È stato utile?

Soluzione

L'indirizzo dell'endpoint, tra cui il numero di porta, può essere impostata nel codice in qualsiasi punto del processo prima di aprire una connessione utilizzando l'oggetto proxy. Così si può impostare l'indirizzo e quindi verificare la connessione, e se fallisce, provare l'altra porta. Ecco alcuni codice che illustra spera il mio 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()

Altri suggerimenti

Sul lato server non c'è nessun problema di esporre un servizio con due attacchi.

Ma sul lato client si otterrà un errore di contratto di duplicato (o parole in tal senso)

Un modo per farlo è quello di creare due interfacce (contratti) che sono identiche tranne che per il nome.

Si dispone di una singola copia della realizzazione, ogni servizio eredita da questa implementazione.

Devi quindi due servizi su porte differenti, che hanno la stessa implementazione / funzionalità.

Sul client è quindi necessario programmare che tenta prima la prima porta e poi se fallisce tenta il secondo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top