2 Stimmen

Problem beim Aufruf eines Webdienstes - Verwenden Sie das Attribut XmlInclude oder SoapInclude

Ich rufe den Webdienst einer anderen Person auf, die eine WSDL-Datei und eine Reihe von XSD-Dateien zur Verfügung gestellt hat. Ich habe die Web-Referenz in meinem Projekt mit der lokalen WSDL-Datei erstellt und eine Klasse mit xsd.exe erstellt. Die Webmethode, die ich aufrufe, lautet

object MyService.MyMethod(object myObj)

Ich erstelle also eine neue Instanz meines Dienstes und eine neue Instanz meines Objekts, das von der xsd. Die Webdienstdokumentation sagt mir, dass myObj vom Typ ObjectRQ ist (erstellt aus dem xsd).

Mein Code sieht folgendermaßen aus:

MyService service = new MyService();

ObjectRQ request = new ObjectRQ();

// Set the values of request.

object result = service.MyMethod(request);

In der letzten Zeile dieses Codes erhalte ich einen Fehler:

Der Typ ObjectRQ wurde nicht erwartet. Verwenden Sie das Attribut XmlInclude oder SoapInclude, um Typen anzugeben, die statisch nicht bekannt sind.

Ich weiß nicht, was diesen Fehler verursachen könnte, und meine Suche hat nichts Hilfreiches ergeben. Kann mir jemand in dieser Sache helfen?

1voto

Jonathan van de Veen Punkte 1006

Da der Parametertyp in Ihrem Proxy Objekt ist, kennt der XmlSerializer, der Ihre Nachrichten zusammenstellt, den Typ ObjectRQ nicht. In diesem Sinne war es unerwartet. Sie müssen also dem XmlSerializer auf die eine oder andere Weise mitteilen, dass er diesen Typ erwarten soll. Eine Möglichkeit ist das Attribut XmlInclude. Eine andere Möglichkeit besteht darin, den Typ zu den Operationen der Proxy-Klasse hinzuzufügen, deren Typen bekannt sind. Im Datenvertrag würden Sie dies mit dem KnownType-Attribut tun, aber da Sie nur die Kontrolle über den Client haben, müssen Sie es im Code selbst tun. Sie finden einen Blogbeitrag darüber aquí .

HTH.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X