2010-03-10 22 views
13

Wie Webservice programmgesteuert in ASP.net aufrufen ohne Webverweis hinzufügen? Meine Webservice-URL ändert sich ständig. Daher muss ich die URL zur Laufzeit erfassen und die Ergebnisse anzeigen. Bitte Beratung.So rufen Sie einen Webservice programmgesteuert in asp.net auf

+0

Geben Sie alle Bindungen und Transporteinstellungen in der Datei web.config an. Erstellen Sie anschließend eine Client-Proxy-Klasse, die Ihre Web-Service-Schnittstelle implementiert und einen Kanal für den Endpunkt erstellt/öffnet, auf dem sich der Service befindet. –

Antwort

0

Wo versuchen Sie, den Dienst aufzurufen und wo sich die Servicedatei befindet?

Wenn sich der Dienst auf derselben Site befindet. Warum nicht einfach den Klassennamen aus dem Service instanziieren. Oder erstellen Sie einfach eine separate Klasse und verwenden Sie die Schnittstelle

2

Sie können die Endpunkt-URL als Teil des Konstruktors Ihrer clientseitigen Proxy-Klasse angeben.

Wenn Sie es während der Laufzeit nicht angeben müssen, kann es auch in Ihrer web.config Datei festgelegt werden.

18

Sie können die URL einer Web-Referenz zur Laufzeit geändert werden (vorausgesetzt, dass die neue Adresse einen Dienst mit dem gleichen Schema präsentiert, die Sie den Verweis ursprünglich zum Erstellen):

MyWebService ms = new MyWebService(); 
ms.Url = "http://example.com/webservice.asmx"; 
ms.MyWebMethod(); 

Web Referenzen sind Auf jeden Fall der Weg zu gehen - während die Klassen, die durch die Web-Referenz erstellt werden, in der Regel ziemlich schwer sind, macht all das starke Tipping es sich lohnt.

+4

Dies scheint bei weitem die einfachste Lösung zu sein. Warum bekommt es nicht mehr Liebe? – Kjensen

+0

Da Question einen Service dynamisch aufrufen soll und nicht durch Hinzufügen einer Webreferenz und Herunterladen des Proxys. –

4

müssen Sie die folgenden Schritte ausführen.

PreReq: Zunächst kennen Sie die URL des Webdienstes.

Lösung: Verwendung wsdl.exe eine Proxy-Klasse zu erstellen und als es kompilieren.

wsdl /out:myProxyClass.cs http://hostServer/WebserviceRoot/WebServiceName.asmx?WSDL 

(. Es gibt auch andere Schalter zur Verfügung für Wsdl Für Beispiel VB Klasse zu generieren, müssen Sie Schalter /Sprache hinzuzufügen: VB)

Sobald Ihre Proxy-Klasse erzeugt Sie können leicht in Code konsumieren.

MyProxyClass objService = new MyProxyClass(); 
DateTime time = objService.GetServerTime(); //Suppose service has method getServerTime 
+0

Hallo, Danke an alle für die Lösungen. Was ich getan habe, ist, dass ich einen Webservice als Referenz hinzugefügt habe. Setzen Sie seine Eigenschaft auf dynamic.And bearbeiten Sie dann den Konstruktor der Reference.cs (der Webdienstklasse), um die URL dynamisch zu übergeben. –

Verwandte Themen