Moin moin,
ich bin ein blutiger Anfänger im Bereich der C# Entwicklung und habe nun die Aufgabe bekommen für ein Windows CE System eine Anwendung zu schreiben, die Daten über einen Webservice auswertet.
Ich habe eine Proxy Klasse über die VS2008 IDE erzeugen lassen.
Die Properties habe ich auf URL-Verhalten = Dynamisch gestellt.
Da ich das CompactFramework nutze habe ich nur eingeschränkte Libraries zur Verfügung.
Zunächst stand ich vor dem Problem, dass ich die Session-ID auswerten muss, was ich im Endefekt dadurch gelöst habe, dass ich den HTTP-Header manuell auslese und erweitere durch eine von der Proxy-Klasse abgeleiteten Klasse.
Das klappt jetzt auch wenigstens gut
Mein Problem liegt nun darin, dass ich den Webservice, so wie er erzeugt wurde nur bedingt nutzen kann:
Den Konstruktor habe ich manuell angepasst, um die URL zu übernehmen.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| public MY_WS_WSDL(String ls_webserviceLocation) { this.Url = ls_webserviceLocation+"/MY_WS_WSDL"; }
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://1.2.3.4:8082/WS2013/MY_WS/CheckPIN", RequestNamespace="http://1.2.3.4:8082/WS2013/MY_WS", ResponseNamespace="1.2.3.4:8082/WS2013/MY_WS", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] public System.Data.DataSet CheckPIN([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string iXMLString, out int sqlcode) { object[] results = this.Invoke("CheckPIN", new object[] { iXMLString}); sqlcode = ((int)(results[1])); return ((System.Data.DataSet)(results[0])); } |
Da mir die IDE entgegen den Beschreibungen im Internet keine Konfigurationsdateien erzeugt übergebe ich die URL als String aus meiner eigenen Anwendungseinstellung
Übergebe ich die Original-URL des Webservices funktioniert alles einwandfrei.
C#-Quelltext
1:
| MY_WS_WSDL lsrv_proxy = new MY_WS_WSDL("http://1.2.3.4:8082/WS2013"); |
So funktionert alles ohne Probleme und ich kann meine Request absetzen und Daten empfangen. Mein problem ist aber, dass die Anwendung an verschiedenen Standorten läuft, die den WebService lokal im Netzwerk laufen haben. Daher muss ich die URL dynamisch festlegen können.
Wenn ich nun jedoch folgenden Aufruf mache:
C#-Quelltext
1:
| MY_WS_WSDL lsrv_proxy = new MY_WS_WSDL("http://2.4.6.8:8082/WS2013"); |
erhalte ich eine WebException und es funktioniert nix mehr.
Der Webservice ist über die entsprechende URL verfügbar und ich kann die WSDL über den Browser abrufen.
Kann mir jemand helfen? Komm da schon seit Tagen nicht mehr weiter und weiss nicht, wie ich es lösen kann.
Ich würde ungerne alle über manuelle HTTP-Requests absetzen müssen.
Schonmal vielen Dank im Voraus
Die simpelsten Fehler sind meist die Schwersten...