Problem:WCF Datacontract, einige Felder haben deserialisieren nicht
ich eine WCF-Dienst eingerichtet habe ein Endpunkt für einen Anruf von einem externen System zu sein. Der Anruf sendet einfaches XML. Ich teste das System, indem ich Anrufe von Fiddler mit dem RequestBuilder in den Dienst sende.
Das Problem ist, dass alle meine Felder mit Ausnahme von zwei Feldern deserialisiert werden. price_retail und price_wholesale.
Was fehlt mir? Alle anderen Felder deserialisieren ohne ein Problem - der Dienst antwortet. Es sind nur diese Felder.
XML Nachricht:
<widget_conclusion>
<list_criteria_id>123</list_criteria_id>
<list_type>consumer</list_type>
<qty>500</qty>
<price_retail>50.00</price_retail>
<price_wholesale>40.00</price_wholesale>
<session_id>123456789</session_id>
</widget_conclusion>
Service-Methode:
public string WidgetConclusion(ConclusionMessage message)
{
var priceRetail = message.PriceRetail;
}
Nachrichtenklasse:
[DataContract(Name = "widget_conclusion", Namespace = "")]
public class ConclusionMessage
{
[DataMember(Name = "list_criteria_id")]
public int CriteriaId { get; set;}
[DataMember(Name = "list_type")]
public string ListType { get; set; }
[DataMember(Name = "qty")]
public int ListQuantity { get; set; }
[DataMember(Name = "price_retail")]
public decimal PriceRetail { get; set; }
[DataMember(Name = "price_wholesale")]
public decimal PriceWholesale { get; set; }
[DataMember(Name = "session_id")]
public string SessionId { get; set; }
}
Gute Antwort. Ich habe beide Möglichkeiten versucht und das Verhalten ist genau, wie Sie beschreiben. Es ist immer eine demütigende Erfahrung, die einfachen Dinge zu vermissen. Ich bin daran interessiert, warum DataContracts Standard in alphabetischer Reihenfolge. Es scheint, dass es deklarativer wäre, die Reihenfolge der Deklaration beizubehalten ... aber ich denke, dass die Lieferung des Attributs Order die deklarativste ist. –
Ja. Ich habe es mir zur Gewohnheit gemacht, die Reihenfolge immer explizit zu deklarieren, macht es später viel einfacher. – tomasr
Gibt es einen anderen Serializer (anders als der antedeluvian XmlSerializer), der dieses knochenharte Verhalten nicht hat? Denn wenn ich diese Art von starrer, extrem strikter Deserialisierung wollte, würde ich nur Binär verwenden. – Pxtl