2012-03-20 2 views
5

Я получаю сообщение об ошибке при попытке отправить коллекцию данных на наш сервис. Если, однако, я добавляю в коллекцию только один элемент, тогда он работает штрафом. Как только я добавлю более одного элемента, я получаю следующую ошибку:Исключение сериализации WCF - NetDataContractSerializer

Использование типа «SmartTrade.Shared.Common.PaymentTerm» как коллекции только для получения не поддерживается NetDataContractSerializer. Рассмотрите маркировку типа атрибутом CollectionDataContractAttribute или атрибутом SerializableAttribute или добавлением установщика в свойство.

Итак, главное отметить, что я могу отправить коллекцию (IList <>) с помощью одного элемента. Я увеличил MaxReceivedMessageSize и MaxArrayLength до того, что, на мой взгляд, более разумно.

Может ли кто-нибудь помочь мне здесь

ответ

3

Наконец-то я его обработал. В одном из базовых классов существовало свойство, которое имело свойство getter и не имело свойства setter. Поэтому мне пришлось добавить свойство setter

+2

Не могли бы вы объяснить, почему сеттер свойство этого требуется? –

3

Альтернативой добавлению бессмысленного сеттера было бы отметить свойство, которое следует игнорировать путем сериализации.

Это можно сделать, украшая вашу собственность с System.Runtime.Serialization.IgnoreDataMemberAttribute

Пример:

public class Whatever 
{ 
    [IgnoreDataMember] // this won't be serialized now 
    public List<string> Things 
    { 
     get { return _things; } 
    } 
}