Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
WSDL unvollständig
timt
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

WSDL unvollständig

beantworten | zitieren | melden

Hallo,

ich habe ein merkwürdiges Problem.

Ich habe einen Webservice der mir ca. 10 Funktionen bereitstellt.
Die Funktionen geben unterschiedliche komplexe Objekte zurück, was super funktioniert, nur bei drei Funktionen die mir ein Benutzerdefiniertes Objekt zurück geben, ist die Beschreibung der komplexen Objekte in der automatisch generierten WSDL Datei unvollständig.
In der Beschreibung der komplexen Objekte fehlen einfach einige Objekte, z.B. strings, guids, und ints.

Ich weiß leider gar nicht wo ich mit der Fehlersuche anfangen soll.
Hat jemand einen Tipp für mich?

Gruß
Tim
private Nachricht | Beiträge des Benutzers
svenson
myCSharp.de - Member



Dabei seit:
Beiträge: 8.746
Herkunft: Berlin

beantworten | zitieren | melden

1. Woran merkst du, dass die WSDL unvollständig ist
2. int, guid, etc. sind keine Objekte, sondern Typen und kommen aus dem XmlSchema-Namespace (üblicherweise mit xs-Prefix), sind also vordefiniert
private Nachricht | Beiträge des Benutzers
timt
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

beantworten | zitieren | melden

Wenn ich den Webservice mit webservice.asmx?WSDL aufrufe, sehe ich in der Beschreibung, dass einige Typen in der Beschreibung des komplexen Typs "PaymentStatus" fehlen.

- <s:element name="CaptureEDD">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="payID" type="s1:guid" />
<s:element minOccurs="1" maxOccurs="1" name="transID" type="s:long" />
<s:element minOccurs="1" maxOccurs="1" name="amount" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="currency" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
- <s:element name="CaptureEDDResponse">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="CaptureEDDResult" type="tns:PaymentStatus" />
</s:sequence>
</s:complexType>
</s:element>
- <s:complexType name="PaymentStatus">
- <s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="ReqID" type="s1:guid" />
<s:element minOccurs="1" maxOccurs="1" name="Amount" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="Type" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="RequestDate" type="s:dateTime" />
</s:sequence>
</s:complexType>

Tim
private Nachricht | Beiträge des Benutzers
svenson
myCSharp.de - Member



Dabei seit:
Beiträge: 8.746
Herkunft: Berlin

beantworten | zitieren | melden

Und wie schaut der Code der PaymentStatus-Klasse aus?
private Nachricht | Beiträge des Benutzers
timt
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

beantworten | zitieren | melden

Das hier ist meine PaymentStatus Klasse.
Das Objekt wird beim Aufruf der Methode CaptureEDD() erzeugt und zurückgegeben.

    public class PaymentStatus
    {
        protected PaymentStatus() { }

        public PaymentStatus(Guid payID, Guid xID, Guid reqID, Int64 transID, int amount, string status, string description, Int64 code, string type, DateTime requestDate)
        {
            this._PayID = payID;
            this._XID = xID;
            this._ReqID = reqID;
            this._TransID = transID;
            this._Amount = amount;
            this._Status = status;
            this._Description = description;
            this._Code = code;
            this._Type = type;
            this._RequestDate = requestDate;
        }
        private Guid _PayID;
        public Guid PayID
        {
            get { return _PayID; }
        }
        private Guid _XID;
        public Guid XID
        {
            get { return _XID; }
        }
        private Guid _ReqID;
        public Guid ReqID
        {
            get { return _ReqID; }
            set { _ReqID = value; }
        }
        private Int64 _TransID;
        public Int64 TransID
        {
            get { return _TransID; }
        }
        private int _Amount;
        public int Amount
        {
            get { return _Amount; }
            set { _Amount = value; }
        }
        private string _Status;
        public string Status
        {
            get { return _Status; }
        }
        private string _Description;
        public string Description
        {
            get { return _Description; }
        }
        private Int64 _Code;
        public Int64 Code
        {
            get { return _Code; }
        }
        private string _Type;
        public string Type
        {
            get { return _Type; }
            set { _Type = value; }
        }
        private DateTime _RequestDate;
        public DateTime RequestDate
        {
            get { return _RequestDate; }
            set { _RequestDate = value; }
        }
    }

Tim
private Nachricht | Beiträge des Benutzers
svenson
myCSharp.de - Member



Dabei seit:
Beiträge: 8.746
Herkunft: Berlin

beantworten | zitieren | melden

Auch lustig ist die Tatsache, dass strings scheinbar optional sind.
private Nachricht | Beiträge des Benutzers
timt
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

beantworten | zitieren | melden

Habe die Lösung gerade selber gefunden.
Die fehlenden Typen haben keinen Setter in der PaymentStatus.
Warum diese Typen deswegen nicht in der WSDL Datei auftauchen ist mir aber nicht ganz klar.

Vielen Dank trotzdem.

Tim
private Nachricht | Beiträge des Benutzers
Borg
myCSharp.de - Member



Dabei seit:
Beiträge: 1.529
Herkunft: Berlin, Germany

beantworten | zitieren | melden

Zitat
Auch lustig ist die Tatsache, dass strings scheinbar optional sind.
Was vermutlich daran liegt, dass Strings Referenztypen sind und daher auch den Wert "kein Wert" (null) aufnehmen können.
private Nachricht | Beiträge des Benutzers
svenson
myCSharp.de - Member



Dabei seit:
Beiträge: 8.746
Herkunft: Berlin

beantworten | zitieren | melden

Anderseits hat XML keinerlei "read-only"-Semantik. Irgendwie konsequent sowas zu ignorieren.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von svenson am .
private Nachricht | Beiträge des Benutzers