Frage

Ich habe zahlreiche Web Service in meinem Projekt, die Arten teilen.

Der Einfachheit halber werde ich mit zwei Web Services demonstrieren.

WebService1 unter http: //MyServer/WebService.asmx webService2 unter http: //MyServer/WebService.asmx

Wenn ich erzeugen, um den Proxy für diese beiden Dienste, die ich verwende:

wsdl / share http: //MyServer/WebService1.asmx http: //MyServer/WebService2.asmx / Appsettingurlkey: WebServiceURL / namespace: MyNamespace /out:MyProxy.cs

Das Problem ist, dass die appsettingurlkey das gleiche für jeden Web Service ist in der Proxy-Datei. Ich mag angeben können, mehr appsettingurlkey Parameter. Wie wird das erreicht? ich stelle dar, Da der / share Parameter verfügbar wurde, sollte es sein, Lösung für die appsettingurlkey speziell für jede Angabe Web Service identifiziert.

Wenn dies mit dem wsdl.exe nicht möglich ist, was würden Sie vorschlagen, ich tun? Ich möchte nicht den generierten Code aktualisieren, die Ausgänge wsdl.exe und ich mag nicht für jede Instanz des Web Service in der URL durch meine ganze Anwendung Gang gehen.

War es hilfreich?

Lösung

Die Proxy-Klassen generiert sind Teilklassen, so wäre meine Lösung Ihren eigenen Konstruktor in einer anderen (nicht generierte) Code-Datei hinzuzufügen sein, die ausdrücklich eine andere Einstellung für jeden Proxy liest.

Andere Tipps

Um Elias eigene Antwort suplement, hier ist die E-Mail-Antwort, die ich ihm gab.

Ich hatte es zum Blog, weil die XML nicht gut in dieses Textfeld einfügen hat: http://www.rickdoes.net/blog/archive/2008/09/29/wsdl-shared-types-and-configuration.aspx

Ahh, statt einen weiteren Teil-Klasse mit einem überladenen Konstruktor in der URL erstellen, die folgenden zusätzlichen Parameter an die wsdl.exe mein Problem lösen ...

wsdl / share http: //MyServer/WebService1.asmx http: //MyServer/WebService2.asmx / appsettingurlkey: WebServiceURL / namespace: MyNamespace /out:MyProxy.cs / appsettingurlkey: BaseSoapUrl / appsettingbaseurl: http: // MyServer /

Wenn die web.config ein BaseSoapUrl appSetting hat, dann wird es benutzen, um zu ersetzen die http: // MyServer / Teilzeichenkette aus der MyProxy.cs. Wenn der appSetting nicht vorhanden ist, dann wird es nur den Weg in der wsdl.exe (Beispiel bereitgestellt verwenden: {} BaseSoapUrl /WebService1.asmx wenn das appSetting mit oder http:. //MyServer/WebService1.asmx wenn nicht den appSetting verwenden)

Ein Dank geht an Rick Kierner für mich in der richtigen Richtung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top