WCF Datacontract, некоторые поля не десериализовывают

Проблема:

Я сделал, чтобы сервис WCF установил, чтобы быть конечной точкой для вызова от внешней системы. Вызов отправляет плоскость xml. Я тестирую систему путем отправки вызовов на службу от Скрипача, использующего RequestBuilder.

Проблема - то, что все мои поля десериализовываются за исключением двух полей. price_retail и price_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>

Сервисный метод:

public string WidgetConclusion(ConclusionMessage message)
{
    var priceRetail = message.PriceRetail;
}

Класс сообщений:

[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; }
}
28
задан Justin Hersh 25 March 2010 в 20:46
поделиться

1 ответ

Поля в вашем сообщении расположены в неправильном порядке. DataContracts по умолчанию использует алфавитный порядок и , а не порядок объявления; и ожидает, что элементы XML будут доставлены в указанном порядке; Неисправные элементы обычно отбрасываются.

Либо исправьте свой контракт, чтобы явно указать правильный порядок (используя свойство Order атрибута DataMemberAttribute), либо убедитесь, что ваш клиент отправляет их в правильном порядке.

50
ответ дан 28 November 2019 в 03:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: