Si un servicio WCF devuelve una matriz de bytes en su mensaje de respuesta, existe la posibilidad de que los datos excedan la longitud predeterminada de 16384 bytes. Cuando esto sucede, la excepción será algo así comoReader WCFConfiguración de cuotas: ¿desventajas?
La cuota máxima longitud de la matriz (16384) se ha excedido al leer XML datos. Esta cuota se puede aumentar en cambiando la propiedad MaxArrayLength en el objeto XmlDictionaryReaderQuotas utilizado al crear el lector XML .
Todos los consejos que he visto en la web es sólo para aumentar los ajustes en el elemento <readerQuotas>
al máximo, así que algo como
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
en el servidor, y similares en el cliente.
Me gustaría saber de cualquier inconveniente con este enfoque, especialmente si el tamaño de la matriz de bytes puede ocasionalmente ser muy grande. ¿La configuración anterior solo hace que WCF declare una gran matriz para cada solicitud? ¿Tiene que limitar el tamaño máximo de los datos devueltos, o puede simplemente especificar un búfer de tamaño razonable y conseguir que WCF continúe hasta que se lean todos los datos?
Gracias!
Ok, por lo que los ajustes en la configuración del servidor sólo afectan a los mensajes de solicitud y los ajustes en la configuración del cliente afectan a los mensajes de respuesta? Si tengo un servicio que recibe un pequeño mensaje de solicitud pero puede devolver una respuesta grande, ¿tengo que hacer algún cambio en la configuración del servidor o dejarlo en manos de los clientes? ¿Hay alguna manera de cambiar la configuración del servidor para que cuando un cliente crea una referencia de servicio se configure automáticamente para respuestas grandes? ¡Gracias! –
¿Cómo se estructura esa "gran respuesta"? ¿Básicamente es un archivo que estás devolviendo? Si es así, verificaría la transmisión de una respuesta basada en flujo. Por lo que yo entiendo, la configuración del servidor afectará las solicitudes entrantes, así como las respuestas salientes, por lo que si configuras el tamaño del mensaje demasiado pequeño, no será posible una respuesta grande (básicamente estás dimensionando un buffer en el servidor utilizado para solicitudes y respuestas). –