Error de WCF “El número máximo de elementos que se pueden serializar o deserializar en un gráfico de objetos es ‘65536’”

Recibo el siguiente error en una llamada a WCF:

El número máximo de elementos que se pueden serializar o deserializar en un gráfico de objetos es ‘65536’

He leído un montón de mensajes en el foro y muchos de ellos mencionan la modificación de app.config y web.config para especificar un nuevo comportamiento para permitir gráficos de objetos más grandes. Lo hice y esto es lo que tengo en esos archivos:

App.Config en el proyecto de WPF:

                <!--          -->               

web.config en el proyecto de servicio:

                               <!---->   

Esto, sin embargo, no ha ayudado. Tenga en cuenta que los servicios a los que se hace referencia en APP.CONFIG no son los servicios con los que estoy teniendo problemas.

También intenté lo siguiente:

  • agregó estos atributos a la implementación del servicio: [DataContract (IsReference = true)], [ServiceBehavior (AddressFilterMode = AddressFilterMode.Any, MaxItemsInObjectGraph = 2147483646)]

  • escribió una clase de DataContractSerializerOperationBehavior personalizada que establece el comportamiento MaximumObjectsInGraph y IsReference. También se agregó un atributo personalizado para aplicar esto a las implementaciones del servicio. Por el desorden, no publiqué el código, pero puedo agregarlo si alguien piensa que sería beneficioso.

¿Pensamientos? Ideas? ¿A donde voy desde aqui?

¡Gracias por adelantado!

Me acabo de dar cuenta de que su archivo de configuración WPF no es correcto. Entonces, borré todos mis comentarios porque estaban asumiendo una configuración WCF válida. Su archivo de configuración de WPF no está bien … necesita decir “Cliente” en lugar de servicio … ¿Está utilizando “Agregar referencia de servicio” en Visual Studio? si es así, debería haber creado el archivo de configuración correcto para usted.

De lo contrario, consulte MSDN para obtener el formato correcto para su archivo de configuración de cliente en su proyecto de WPF.

La configuración de los valores siguientes resolvió el problema para mí.

Configuración del cliente:

                       

Configuración del servidor:

                                 

¿Has intentado subir el búfer y el tamaño máximo de mensaje recibido también?

 maxBufferSize="6553600" maxBufferPoolSize="52428800" maxReceivedMessageSize="6553600" 

Tenga cuidado con el elemento “dataContractSerializer”. En mi caso, recibí el error mencionado hasta que puse este elemento como el primer elemento del elemento principal “comportamiento”. Al menos en el lado del cliente de hecho.

Está devolviendo una lista genérica o una matriz que tiene un tamaño de más de 65536. En sus consultas, el uso de una selección superior de 60000 o no agregar más de 60k elementos resolverá su problema.