WCF Datacontract,某些字段不反序列化

Jus*_*rsh 28 wcf datacontractserializer

问题:

我有一个WCF服务设置作为来自外部系统的呼叫的端点.该调用是发送普通的xml.我正在通过使用RequestBuilder从Fiddler向服务发送调用来测试系统.

问题是我的所有字段都被反序列化,但两个字段除外.price_retailprice_wholesale.

我错过了什么?所有其他字段反序列化没有问题 - 服务响应.只是这些领域.

XML消息:

<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>
Run Code Online (Sandbox Code Playgroud)

服务方式:

public string WidgetConclusion(ConclusionMessage message)
{
    var priceRetail = message.PriceRetail;
}
Run Code Online (Sandbox Code Playgroud)

消息类:

[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; }
}
Run Code Online (Sandbox Code Playgroud)

tom*_*asr 50

您的邮件的字段顺序错误.DataContracts默认为按字母顺序排序,而不是声明顺序; 并期望XML元素按顺序到达; 通常会丢弃乱序元素.

修复合同以明确指定正确的顺序(使用DataMemberAttribute的Order属性)或确保客户端在正确的顺序中发送它们.

  • 是否有另一个序列化器(除了antedeluvian XmlSerializer)没有这种骨头行为?因为如果我想要那种严格的超严格反序列化,我只会使用二进制. (8认同)
  • 使用可选字段怎么样?wsdl中的(minOccurs ="0")?这可能是响应的一部分.所以它可以完全弄乱订单. (2认同)