2010-08-09 4 views
14

Ich habe einen SOAP-Webdienst, der auf mehreren Servern verfügbar ist und mehrere Endpunkte aufweist. Ich möchte vermeiden, mehrere Service-Referenzen (C# SOAP-Port-Clients) mit unterschiedlichen Namen hinzuzufügen, nur um mit diesen Diensten zu sprechen, da die API genau die gleiche ist.Verwenden eines C# -Dienstreferenz-SOAP-Clients mit verschiedenen Endpunkt-URIs

Gibt es eine Möglichkeit, den Endpunkt-URI zur Laufzeit zu konfigurieren?

Antwort

4

Ich hatte auch Schwierigkeiten, diese zu finden. Ich lieh ich schließlich nur die Konfiguration verbindlich und tat dies:

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

Ich verwende die folgende, die großen Werke:

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

ich die folgende Fehlermeldung erhalten, wenn ich dies mit verschiedenen Endpunkten versuchen: „Nicht erkennt Nachrichtenversion . " Du hast eine Idee warum? – Preexo

+0

Eine zusätzliche Frage, sollte ich ** (A) ** eine Klasseninstanz von 'wsSoapClient()' erstellen und sie jedes Mal verwenden, wenn ich eine WebMethode aufrufen möchte oder ** (B) ** eine 'using' Anweisung verwenden Instanziieren Sie auf Anfrage und befreien Sie es so schnell wie möglich? – dialex

Verwandte Themen