Исключение сериализации WCF - NetDataContractSerializer
Я получаю сообщение об ошибке при попытке отправить набор данных в наш сервис. Однако, если я добавлю только один элемент в коллекцию, он будет работать нормально. Как только я добавляю больше одного элемента, я получаю следующую ошибку
Использование типа "SmartTrade.Shared.Common.PaymentTerm" в качестве коллекции только для получения не поддерживается с NetDataContractSerializer. Попробуйте пометить тип атрибутом CollectionDataContractAttribute или атрибутом SerializableAttribute или добавить установщик в свойство.
Итак, главное, что нужно отметить, это то, что я могу отправить коллекцию (IList<>) с одним элементом. Я увеличил MaxReceivedMessageSize и MaxArrayLength до того, что я считаю более чем разумным.
Кто-нибудь может помочь мне здесь
2 ответа
Наконец я решил это. В одном из базовых классов было свойство, которое имело только свойство getter и не имело свойства setter. Поэтому мне пришлось добавить свойство сеттера
Альтернативой добавлению бессмысленного установщика было бы пометить свойство, которое будет игнорироваться при сериализации.
Это можно сделать, украсив свою собственность System.Runtime.Serialization.IgnoreDataMemberAttribute
Пример:
public class Whatever
{
[IgnoreDataMember] // this won't be serialized now
public List<string> Things
{
get { return _things; }
}
}