'Error serializing body'. Problem beim Aufruf des Fedex Webservice über .NET 3.5

8

Ich benutze Fedex's Web Services und bekomme einen nervigen Fehler, bevor ich irgendwo hinkomme.

Beim Serialisieren des Nachrichtentexts addressValidationRequest1 ist ein Fehler aufgetreten: 'Es konnte keine temporäre Klasse generiert werden (Ergebnis = 1). Fehler CS0030: Typ 'FedEx.InterOp.AddressValidationServiceReference.ParsedElement []' kann nicht in 'FedEx.InterOp.AddressValidationServiceReference.ParsedElement' konvertiert werden Fehler CS0029: Der Typ 'FedEx.InterOp.AddressValidationServiceReference.ParsedElement' kann nicht implizit in 'FedEx.InterOp.AddressValidationServiceReference.ParsedElement []' konvertiert werden. ". Weitere Informationen finden Sie unter InnerException.

Ich benutze .NET 3.5 und bekomme eine schreckliche benannte Klasse für mich (ich bin nicht sicher, warum es nicht nur AddressValidationService ist):

AddressValidationPortTypeClient addressValidationService = new ...;

in dieser Klasse mache ich meinen Web-Service-Aufruf:

addressValidationService.addressValidation(request);

Dies ist, wenn ich diesen Fehler bekomme.

Die einzigen Hinweise, die ich zu diesem Fehler finden kann, stammen von alten 1.1-Projekten. In meinem Fall hat meine DLL Verweise auf System.Web und System.Web.Services, die damals ein Problem zu sein schienen.

    
Simon_Weaver 05.12.2008, 22:37
quelle

3 Antworten

18

Sie müssen nur das [] [] ändern, nicht das einzelne [].

Ändern Sie in Reference.cs

%Vor%     
Simon_Weaver 09.01.2009, 20:56
quelle
7

Stellt sich heraus, Fedex eigene Dokumentation deckt dies speziell ab!

Ich verwende wsdl.exe von Microsoft, um Code zu generieren und erhalte einen Fehler CS0029: Kann Typ 'fedexreq.ParsedElement' nicht implizit in 'fedexreq.ParsedElement []' konvertieren.

Dies ist ein Fehler, der vom Web Services Description Language-Tool (Wsdl.exe) generiert wird, um die Client-Informationen zu generieren. Wenn Sie ein Schema veröffentlichen, das geschachtelte Knoten enthält, bei denen das Attribut maxOccurs auf den Wert "unbounded" gesetzt ist, erstellt das Tool Wsdl.exe mehrdimensionale Arrays in der generierten Codedatei. Daher enthält der generierte Code falsche Typen für die verschachtelten Knoten. Um das zu lösen, modifizieren Sie den generierten Code, indem Sie die eckigen Klammern ([]) aus dem Datentyp delectation statements entfernen. Weitere Informationen finden Sie unter Ссылка und Ссылка

    
Simon_Weaver 05.12.2008 22:59
quelle
6

Hinweis: Um auf die Reference.cs-Datei zuzugreifen, auf die Simon_Weaver verweist, öffnen Sie das Projekt in Visual Studio und klicken Sie im Projektmappen-Explorer auf die Web-Referenz und dann auf die kleinen Symbole oben im Projektmappen-Explorer. Klicken Sie auf das Symbol "Alle Dateien anzeigen", um versteckte Dateien anzuzeigen. Erweitern Sie nun den Webverweis, erweitern Sie dann die Reference.map und schließlich sehen Sie Reference.cs, die Sie bearbeiten können, indem Sie [] [] durch []

ersetzen

Verwechseln Sie diese Referenz.cs nicht mit der Referenz.cs, die Sie möglicherweise von Fedex erhalten haben, wenn Sie ihren Beispielcode herunterladen.

    
gergall 23.12.2011 18:35
quelle

Tags und Links