Entwickler-Ecke
Verteilte Systeme - Zugriff auf WebService mit eigenartigen Methoden
pascalsv - Di 02.09.08 16:19
Titel: Zugriff auf WebService mit eigenartigen Methoden
Hallo zusammen,
ich versuche zurzeit, den Zugriff auf WebServices zu verstehen. Dazu habe ich ein ASP.NET Web Application Projekt angelegt und den WebService hinzugefügt. Soweit so gut.
Dann habe ich die URL zum WebService geändert (da ich einen anderen nutzen wollte) und nun laufe ich permanent in diesen Fehler:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| Server Error in '/' Application. --------------------------------------------------------------------------------
Parser Error Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.
Parser Error Message: Could not load type 'ByDWebClient._Default'.
Source Error:
Line 1: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ByDWebClient._Default" %> Line 2: Line 3: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Source File: /Default.aspx Line: 1
-------------------------------------------------------------------------------- Version Information: Microsoft .NET Framework Version:2.0.50727.1433; ASP.NET Version:2.0.50727.1433 |
Ich verstehe nicht, was hier falsch läuft. Auf diversen Seiten wird bei diesem Problem empfohlen, das Projekt neu zu veröffentlichen. Aber ich erstelle doch ein Projekt für den Zugriff auf einen WebService und nicht den Service selbst. Ausserdem ging es vor Änderung des WebService einwandfrei.
Was tun??
Danke,
Pascal
Robert.Wachtel - Di 02.09.08 16:48
Titel: Re: Zugriff auf WebService mit eigenartigen Methoden
Die Methodensignatur ist identisch?
Übrigens eine seltene Visual-Studio-Version, die Du da hast... :mrgreen:
pascalsv - Di 02.09.08 17:07
Hallo Robert,
ich denke schon. Hier:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| ... using ByDWebClient.StefansWebService;
namespace ByDWebClient { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Label1.Text = "Nüscht"; }
protected void Button1_Click(object sender, EventArgs e) { StefansWebService.GetReportListResponse WebServiceReportListResponse = new StefansWebService.GetReportListResponse(); Label1.Text = WebServiceReportListResponse.EtReportList.GetLength(0).ToString(); } } } |
Pascal
Robert.Wachtel - Di 02.09.08 20:00
Ich meinte natürlich die Signatur der beiden Webservices...
Und der Webservice heißt tatsächlich GetReportListResponse?
Poste doch mal den Webservice.
pascalsv - Mi 03.09.08 09:12
Hallo Robert,
anbei ein Screnshot der WebService Definition: webservice.jpg. GetReportList ist lediglich eines der Methoden. Oh je, ich glaube, ich mache hier "etwas" Grundlegendes falsch.
Würdest Du mir bitte unter die Arme greifen??
Zum besseren Verständnis, hier ein Screenshot der Definition, die VS2008 daraus baut: webservice_def.jpg.
Mein Coding sieht dann so aus:
C#-Quelltext
1: 2: 3:
| StefansWebService.GetReportListResponse ReportListResponse = new GetReportListResponse(); lbResult.Items.Add("Result from Web Service:"); lbResult.Items.Add("Count: " + ReportListResponse.EtReportList[0].Value); |
Danke,
Pascal
Robert.Wachtel - Mi 03.09.08 10:02
pascalsv hat folgendes geschrieben: |
[...] GetReportList ist lediglich eines der Methoden. [...] |
Aha. ;)
Erstmal erstellst Du eine Instanz Deines WebServices (genauer eigentlich der Proxy-Klasse):
C#-Quelltext
1:
| StefansWebService ws = new StefansWebService(); |
und dann kannst Du auf dessen Methoden wie bei einer lokalen Klasse zugreifen:
C#-Quelltext
1:
| MeinErgebnis = ws.MacheIrgendWas(MitParameter); |
oder
C#-Quelltext
1:
| ws.MachWasOhneParameterUndRueckgabewert(); |
Eigentlich ganz simpel - einfach nur geradeaus denken. ;) Anspruchsvoller wird es erst bei asynchronen Webservices... :mrgreen:
pascalsv - Mi 03.09.08 10:33
[quote="
Robert.Wachtel]
C#-Quelltext
1:
| StefansWebService ws = new StefansWebService(); |
[/quote]
Hallo Robert,
hier bekomme ich die Fehlermeldung: "'AccessByDWebService.StefansWebService' is a 'namespace' but is used like a 'type'". Warum?
So sieht die Definition in der reference.cs aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| namespace AccessByDWebService.StefansWebService { [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")] [System.ServiceModel.ServiceContractAttribute(Namespace="urn:sap-com:document:sap:soap:functions:mc-style", ConfigurationName="StefansWebService.ByDCrystalReportDT")] public interface ByDCrystalReportDT { [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")] [System.ServiceModel.XmlSerializerFormatAttribute()] AccessByDWebService.StefansWebService.GetQueryDataResponse1 GetQueryData(AccessByDWebService.StefansWebService.GetQueryDataRequest request);
...
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.1433")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:sap-com:document:sap:soap:functions:mc-style")] public partial class GetQueryData : object, System.ComponentModel.INotifyPropertyChanged { private string iQueryField; private _a1s_ccaCrVarValue[] itVarValueField; [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=0)] public string IQuery { get { return this.iQueryField; } set { this.iQueryField = value; this.RaisePropertyChanged("IQuery"); } } |
Pascal
Kha - Mi 03.09.08 11:08
Robert.Wachtel hat folgendes geschrieben: |
pascalsv hat folgendes geschrieben: | [...] GetReportList ist lediglich eines der Methoden. [...] |
Aha. ;) |
Webservice-Methoden => CLR-Klassen, wenn ich mir den zweiten Screenshot so ansehe ;) .
Aber der Fehlermeldung nach hat das Problem doch überhaupt nichts mit den Services zu tun, irgendwie hast du dir deine Default.aspx zerschossen. Lass dir das Projekt noch einmal "
Neu erstellen" und schau im Reflector nach, ob die Klasse "ByDWebClient._Default" wirklich existiert.
pascalsv - Mi 03.09.08 11:18
Hmmm,
ich habe mir die reference.cs noch einmal angesehen. Hier gibt es die Klasse, die "meine" Methoden beinhaltet:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| public partial class ByDCrystalReportDTClient : System.ServiceModel.ClientBase<AccessByDWebService.StefansWebService.ByDCrystalReportDT>, AccessByDWebService.StefansWebService.ByDCrystalReportDT { public ByDCrystalReportDTClient() { } public ByDCrystalReportDTClient(string endpointConfigurationName) : base(endpointConfigurationName) { } public ByDCrystalReportDTClient(string endpointConfigurationName, string remoteAddress) : base(endpointConfigurationName, remoteAddress) { } public ByDCrystalReportDTClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : base(endpointConfigurationName, remoteAddress) { } public ByDCrystalReportDTClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : base(binding, remoteAddress) { } [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] AccessByDWebService.StefansWebService.GetQueryDataResponse1 AccessByDWebService.StefansWebService.ByDCrystalReportDT.GetQueryData(AccessByDWebService.StefansWebService.GetQueryDataRequest request) { return base.Channel.GetQueryData(request); } public AccessByDWebService.StefansWebService.GetQueryDataResponse GetQueryData(AccessByDWebService.StefansWebService.GetQueryData GetQueryData1) { AccessByDWebService.StefansWebService.GetQueryDataRequest inValue = new AccessByDWebService.StefansWebService.GetQueryDataRequest(); inValue.GetQueryData = GetQueryData1; AccessByDWebService.StefansWebService.GetQueryDataResponse1 retVal = ((AccessByDWebService.StefansWebService.ByDCrystalReportDT)(this)).GetQueryData(inValue); return retVal.GetQueryDataResponse; } |
Nur wie komme ich nun an die Methode "GetQueryData"? Ich habe folgendes versucht:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| using AccessByDWebService.StefansWebService; . . . ByDCrystalReportDTClient ws = new ByDCrystalReportDTClient("http://****F208BE3/wsdl11/allinone/ws_policy/document?***nt=100"); if (ws != null) { lbResult.Items.Add("Result from Web Service:"); GetReportListResponse Response = new GetReportListResponse(); Response = ws.GetReportList(); lbResult.Items.Add("Count: "); } |
Aber dann wirft er den Fehler "No overload for method 'GetReportList' takes '0' arguments". Bei dieser Methode soll aber eigentlich kein Parameter übergeben werden. Ich raff es einfach nicht.... :cry:
Danke,
Pascal
Kha - Mi 03.09.08 11:33
Von Webservices verstehe ich nicht viel, aber war dein ursprünglicher Code nicht richtig :nixweiss: ? Wenigstens ließ er sich noch kompilieren ;) ...
Ansonsten: Welchen Parameter will er denn?
pascalsv - Mi 03.09.08 12:15
Kha hat folgendes geschrieben: |
Ansonsten: Welchen Parameter will er denn? |
Wie in der Signatur angegeben: AccessByDWebService.StefansWebService.GetQueryData GetQueryData1...
Aber was soll das sein? Ich denke, ich mache hier etwas Grundlegendes falsch....
:(
Pascal
Kha - Mi 03.09.08 14:20
pascalsv hat folgendes geschrieben: |
Kha hat folgendes geschrieben: | Ansonsten: Welchen Parameter will er denn? |
Wie in der Signatur angegeben: [...] |
Die Signatur hast du uns aber noch gar nicht gezeigt, wenn ich nichts übersehe :nixweiss: . Ich glaube, du verwechselst die Methode gerade mit "GetQueryData".
Darauf würde ich aber gerne noch eine Antwort erhalten:
Kha hat folgendes geschrieben: |
Aber der Fehlermeldung nach hat das Problem doch überhaupt nichts mit den Services zu tun, irgendwie hast du dir deine Default.aspx zerschossen. |
Kha hat folgendes geschrieben: |
Von Webservices verstehe ich nicht viel, aber war dein ursprünglicher Code nicht richtig :nixweiss: ? Wenigstens ließ er sich noch kompilieren ;) ... |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!