Я новичок в HTTP Post и сталкиваюсь с необычной проблемой. У меня есть объект запроса, указанный ниже:
[DataContract(Namespace = "http://Test.com/WCF")]
public class Request
{
[DataMember]
public string CardNumber { get; set; }
[DataMember]
public string CardExpDate { get; set; }
[DataMember]
public string AccountNumber { get; set; }
[DataMember]
public string NameOnCard { get; set; }
[DataMember]
public string CardVV2 { get; set; }
[DataMember]
public decimal PaidAmount { get; set; }
[DataMember]
public decimal ServiceFee { get; set; }
}
Когда я делаю действие Http Post, только части параметров, переданные службе.
Мой заголовок и тело запроса выглядят следующим образом:
User-Agent: Fiddler
Host: localhost:8832
Content-Length: 303
Content-Type: application/xml;charset=utf-8
<Request xmlns="http://Test.com/WCF">
<AccountNumber>6136307626</AccountNumber>
<NameOnCard>Test test</NameOnCard>
<CardNumber>4000202020202020</CardNumber>
<CardExpDate>11/11</CardExpDate>
<CardVV2>123</CardVV2>
<PaidAmount>30</PaidAmount>
<ServiceFee>1</ServiceFee>
</Request>
Значения CardNumber, CardExpDate и CardVV2 всегда не привязаны к сервису. Другие поля хороши.
Любая помощь очень ценится. Спасибо!
По умолчанию для DataContract сериализации предполагается, что члены сериализуются в алфавитном порядке, а не в порядке объявления, если вы не указали значения для свойства Order атрибута [DataMember] для управления порядком явно.
Похоже, что отправляемое сообщение не соответствует ни одному из этих форматов, поэтому вероятность того, что сериализатор предполагает, что некоторые элементы отсутствуют, и что вне порядка - это дополнительные элементы, он не знает, где помещается в класс CLR.
Итак, либо исправьте свой запрос, чтобы элементы были в алфавитном порядке, либо изменили порядок в datacontract в соответствии с вашим входным сообщением.