Domanda

sto ancora imparando il tutto WCF, quindi per favore abbiate pazienza con me qui.

Quello che ho è due self service ospitati creati utilizzando C # e VS 2008:
Servizio # 1 aggiunge due numeri e restituisce il risultato.
Servizio # 2 Restituisce il quadrato di un numero.

Voglio che il cliente sia in grado di inviare in due numeri di servizio 1, ottenere la somma e quindi inviare la somma di servizio 2 e ottenere la piazza.

Ho due proxy generati sia per i servizi, e sono in grado di utilizzare Intellisense su di loro, in modo che parte funziona presumibilmente.

Ora Come faccio a configurare il mio file app.config in modo tale che posso comunicare con entrambi i servizi? In questo momento, io ottenere un'eccezione ogni volta che cerco di farlo.

[Il client funziona bene se ho solo una delle configurazioni nel file di applicazione alla volta, e provo a chiamare solo quel server.]

Suppongo che questa è una domanda molto noobish, e la risposta è probabilmente "struttura del file di configurazione in modo _____", ma Google semplicemente non sembrano avere un esempio / guida.

Qualcuno sa come fare questo?

Nota: Consumare più servizi WCF da un client cliente suona come se un duplicato NON è quello che sto cercando.

Modifica Grazie a marc_s, ho capito di lavoro

Con entrambi i servizi in esecuzione in diverse applicazioni, non ho bisogno di dividere il file di configurazione del server, ma qui è quello che ho fatto con i file di configurazione del client: Primi generati automaticamente i file di configurazione utilizzando SvrUtil.exe e poi li fusi in questo modo:

<bindings>
  <wsHttpBinding>

    <binding>
    ...
    </binding>

    <binding>
    ...
    </binding>

  </wsHttpBinding>
</bindings>

       ...       

  <endpoint>

...       
   

È stato utile?

Soluzione

Se si desidera eseguire i due servizi su endpoint / porte separate, fare qualcosa di simile:

sul lato server:

<service name="Service1">
    <endpoint address="http://localhost:8001/service1.asmx"
            binding="basicHttpBinding"
            contract="IService1" />
</service>
<service name="Service2">
    <endpoint address="http://localhost:8002/service2.asmx" 
            binding="basicHttpBinding"
            contract="IService2" />
</service>

sul lato client:

<client>
    <endpoint address="http://localhost:8001/service1.asmx"
            binding="basicHttpBinding"
            contract="IService1"
            name="Service1" />
    <endpoint address="http://localhost:8002/service2.asmx" 
            binding="basicHttpBinding"
            contract="IService2"
            name="Service2" />
</client>

Che dovrebbe darvi due separati, i singoli endpoint sul server e un client che parlare con entrambi.

Marc

Altri suggerimenti

Mi rendo conto che avete chiesto una risposta app.config, ma questo numero potrebbe aiutare. Io normalmente iniziare la configurazione delle connessioni client programatically prima, dal momento che è più semplice, e una volta che avete ottenuto che il lavoro si potrebbe spostarlo app.config.

Ecco un exmaple su come configurare un client WCF.

BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress(serverURL);
MyServiceClient myServiceProxy = new MyServiceClient(binding, address);

Si potrebbe quindi avere qualcosa di simile al di sotto nel vostro app.config.

<client>
    <endpoint address="http://localhost/service1.asmx"
            binding="basicHttpBinding"
            bindingConfiguration="basicHttpBinding" 
            contract="IService1"
            name="Service1" />
    <endpoint address="http://localhost/service2.asmx" 
            binding="basicHttpBinding"
            bindingConfiguration="basicHttpBinding"
            contract="IService2"
            name="Service2" />
</client>

Non basta avere uno scontro di endpoint? Assicurarsi che entrambi i servizi non sono configurati per l'ascolto sullo stesso numero di porta per esempio. Se si potesse pubblicare il tuo file di configurazione (o una versione sterilizzata di esso) che avrebbe aiutato.

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