2010-08-09 6 views
14

J'ai un service Web SOAP disponible sur plusieurs serveurs, avec plusieurs points de terminaison. Je veux éviter d'ajouter plusieurs références de service (clients de port SOAP C#) avec des noms différents juste pour parler à ces services, puisque l'API est exactement la même chose.Utilisation d'un client SOAP de référence de service C# avec différents URI de point de terminaison

Existe-t-il un moyen de configurer l'URI de point final lors de l'exécution?

Répondre

4

J'ai eu du mal à trouver celui-ci aussi. J'ai finalement juste emprunté la configuration de liaison et fait ceci:

private static wsXXXX.IwsXXXXClient wsXXXXClientByServer(string sServer) 
{ 
    // strangely, these two are equivalent 
    WSHttpBinding binding = new WSHttpBinding("WSHttpBinding_IwsXXXX"); 
    // WSHttpBinding binding = new WSHttpBinding(SecurityMode.Message, false); 

    EndpointAddress remoteAddress = new EndpointAddress(new Uri(string.Format("http://{0}:8732/wsXXXX/", sServer)), new UpnEndpointIdentity("[email protected]")); 

    return new wsXXXX.IwsXXXXClient(binding, remoteAddress); 
} 
23

J'utilise les éléments suivants qui fonctionne très bien:

 ServiceReference1.wsSoapClient ws= new ServiceReference1.wsSoapClient(); 
     ws.Endpoint.Address = new System.ServiceModel.EndpointAddress("http://xxx/myservice.asmx"); 
+0

-je obtenir l'erreur suivante, lorsque je tente cela avec différents critères d'évaluation: « la version non reconnue message " Tu as une idée pourquoi? – Preexo

+0

Une question supplémentaire, devrais-je ** (A) ** créer une instance de classe de 'wsSoapClient()' et l'utiliser chaque fois que je veux appeler un WebMethod ou ** (B) ** utiliser une instruction 'using' pour instancier sur demande et le libérer dès que possible? – dialex