WCF serialisiert nicht alle Eigenschaften

7

Ich verwende einen SOAP-Service, der in VS2010 als Service-Referenz importiert wurde. Ich rufe einen der Dienste mit einem Anfrageobjekt auf, das vom Dienst bereitgestellt wird. Das Problem, das ich habe, ist, dass nicht alle Eigenschaften des Objekts serialisiert sind, oder nicht über die Leitung gesendet werden. Das Anfrageobjekt sieht folgendermaßen aus:

%Vor%

Und hier ist, was über den Draht gesendet wird. Ich habe es mit wireshark eingefangen

%Vor%

Zwei der Parameter, Id und Status, wurden nicht an den Dienst gesendet, und ich kann einfach nicht herausfinden, warum. Die Werte werden festgelegt, und die von WSDL generierten Eigenschaften sind öffentlich und weisen dieselben Serialisierungsattribute wie die Eigenschaften auf, die serialisiert werden.

Jede Hilfe wäre willkommen.

Bearbeiten ---- Mit dem generierten Service-Referenz-Code aktualisiert

%Vor%     
Gargamel 29.11.2011, 13:51
quelle

1 Antwort

22

Das Problem ist gelöst. Der Fehler war, dass der SOAP-Dienst aktualisiert wurde und einige Eigenschaften jetzt optional waren. Wenn ein Feld / eine Eigenschaft angibt, dass XX in einer SOAP-Nachricht als optional gekennzeichnet ist, erstellt WCF eine entsprechende zusätzliche Eigenschaft XXIsSpecified , die auf true festgelegt werden muss Der Wert XX ist festgelegt. Andernfalls wird WCF diese Eigenschaft weder serialisieren noch senden.

Es gibt verschiedene Möglichkeiten zu sehen, ob eine Eigenschaft als optional festgelegt ist.

  • In der generierten Datei Reference.cs hat jedes optionale Objekt eine entsprechende IsSpecified-Eigenschaft: private System.DateTime validFromField; private bool validFromFieldSpecified;

  • Sie können soapUI verwenden, um die wsdl

  • zu sehen und zu testen
  • Navigieren Sie mit chrome oder einem anderen Browser zur wsdl und prüfen Sie, ob das Element das minoccurs-Attribut hat. Wenn es da ist und es den Wert 0 hat, ist es optional. wie dieser <xs:element minOccurs="0" name="validFrom" type="xs:dateTime"/>
Gargamel 29.11.2011 20:41
quelle

Tags und Links