2012-03-20 14 views
5

Recibo un error al intentar enviar una recopilación de datos a nuestro servicio. Sin embargo, si agrego solo un elemento a la colección, entonces funciona como multas. Tan pronto como agregue más de un elemento, recibo el siguiente errorWCF Serialization Exception - NetDataContractSerializer

El uso del tipo 'SmartTrade.Shared.Common.PaymentTerm' como una colección de solo obtención no es compatible con NetDataContractSerializer. Considere marcar el tipo con el atributo CollectionDataContractAttribute o el atributo SerializableAttribute o agregue un setter a la propiedad.

Por lo tanto, la cuestión clave a tener en cuenta aquí es que puedo enviar la colección (IList <>) con un solo elemento. He aumentado el MaxReceivedMessageSize y el MaxArrayLength a lo que creo que es más que razonable.

¿Alguien me puede ayudar aquí

Respuesta

3

Finalmente lo resolví. Había una propiedad en una de las clases base que solo tenía una propiedad getter y no tenía una propiedad setter. Así que tuve que agregar una propiedad setter

+2

Podría por favor explique por qué la propiedad colocador Esto es necesario? –

3

Una alternativa para agregar un setter sin sentido sería marcar la propiedad para ser ignorada por la serialización.

Esto se puede hacer mediante la decoración de su propiedad con System.Runtime.Serialization.IgnoreDataMemberAttribute

Ejemplo:

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