Amitesh
Amitesh

Reputation: 677

WCF Serialization Exception - NetDataContractSerializer

I am getting an error while trying to send an collection of data over to our service. If however I add only a single item to the collection then it works fines. As soon as I add more then one item I get the following error

The use of type 'SmartTrade.Shared.Common.PaymentTerm' as a get-only collection is not supported with NetDataContractSerializer. Consider marking the type with the CollectionDataContractAttribute attribute or the SerializableAttribute attribute or adding a setter to the property.

So the key thing to note here is that I can send the collection (IList<>) with a single item. I have increased the MaxReceivedMessageSize and the MaxArrayLength to what I think is more then reasonable.

Can anybody help me out here

Upvotes: 5

Views: 2483

Answers (2)

demoncodemonkey
demoncodemonkey

Reputation: 11957

An alternative to adding a pointless setter would be to mark the property to be ignored by serialization.

This can be done by decorating your property with System.Runtime.Serialization.IgnoreDataMemberAttribute

Example:

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

Upvotes: 3

Amitesh
Amitesh

Reputation: 677

Finally I worked it out. There was a property in one of the base class that only had a getter property and did not have a setter property. So I had to add a setter property

Upvotes: 3

Related Questions