Проблема:
Я сделал, чтобы сервис 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; }
}
Поля в вашем сообщении расположены в неправильном порядке. DataContracts по умолчанию использует алфавитный порядок и , а не порядок объявления; и ожидает, что элементы XML будут доставлены в указанном порядке; Неисправные элементы обычно отбрасываются.
Либо исправьте свой контракт, чтобы явно указать правильный порядок (используя свойство Order атрибута DataMemberAttribute), либо убедитесь, что ваш клиент отправляет их в правильном порядке.