Исключение сериализации WCF - NetDataContractSerializer - PullRequest
5 голосов
/ 20 марта 2012

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 18 июня 2015

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

Это можно сделать, украсив ваше свойство с помощью System.Runtime.Serialization.IgnoreDataMemberAttribute

Пример:

public class Whatever
{
    [IgnoreDataMember] // this won't be serialized now
    public List<string> Things
    {
        get { return _things; }
    }
}
3 голосов
/ 20 марта 2012

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

...