Частичное значение параметра не передается с помощью HTTP Post - PullRequest
2 голосов
/ 15 января 2010

Я новичок в 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 Action, в службу передаются только части параметров.

Мой заголовок и тело запроса, как показано ниже:

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 всегда не привязаны к услуге. Другие поля хороши.

Любая помощь высоко ценится. Спасибо!

1 Ответ

4 голосов
/ 15 января 2010

Сериализация DataContract по умолчанию предполагает, что члены сериализуются в алфавитном порядке, а не в порядке объявления, если вы не укажете значения для свойства Order атрибута [DataMember] для явного управления порядком.

Похоже, что отправляемое вами сообщение не соответствует ни одному из форматов, поэтому вероятно, что сериализатор предполагает, что некоторые элементы отсутствуют, и что вышедшие из строя элементы являются дополнительными, поэтому он не знает, куда их отправлять. положить в класс CLR.

Поэтому исправьте запрос так, чтобы элементы располагались в алфавитном порядке, или измените порядок в контракте данных, чтобы он соответствовал вашему входному сообщению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...