Cuota máxima de longitud de matriz

Estoy escribiendo una pequeña aplicación WCF / WPF para cambiar el tamaño de las imágenes, pero WCF me está causando dolor cuando trato de enviar una imagen de tamaño 28K a mi servicio del cliente. El servicio funciona bien cuando le envío imágenes más pequeñas. Inmediatamente asumí que se trataba de un problema de configuración y revisé la web buscando publicaciones relacionadas con la propiedad MaxArrayLength en mi configuración de enlace. He aumentado los límites de estas configuraciones tanto en el cliente como en el servidor hasta el máximo de 2147483647, pero aún así obtengo el siguiente error:

El formateador arrojó una excepción al intentar deserializar el mensaje: Hubo un error al intentar deserializar el parámetro http://mywebsite.com/services/servicecontracts/2009/01:OriginalImage . El mensaje InnerException fue ‘Hubo un error deserializando el objeto de tipo System.Drawing.Image. La cuota de longitud de matriz máxima (16384) se ha excedido al leer datos XML. Esta cuota se puede boost cambiando la propiedad MaxArrayLength en el objeto XmlDictionaryReaderQuotas utilizado al crear el lector XML. ‘. Por favor, consulte InnerException para más detalles.

He hecho que las configuraciones de mi cliente y servidor sean las mismas y se parecen a las siguientes: Servidor:

                                  

y mi configuración de cliente se ve así:

                       

Parece que no importa a qué establezca estos valores. Todavía recibo un error que dice que wcf no puede serializar mi archivo porque es mayor que 16384. ¿Alguna idea?

Actualización: la dirección de correo electrónico en la etiqueta userPrincipalName se ha modificado para mi privacidad

My Bad: olvidé aplicar mi configuración de enlace a mi punto final en mi configuración del lado del servidor. La configuración del servidor debe leer:

                                   

Tenga en cuenta que bindingConfiguration = “NetTcpBinding_ImageResizerServiceContract” se ha agregado al punto final netTcp. Mi aplicación ahora funciona con imágenes más grandes. Dulce.

Por favor, agregue en el enlace.

Ese es el problema principal al cargar y descargar el byte [], resolvió mi problema.

      

Utilicé el Microsoft SDK SvcConfigEditor. Tienes esto si usas Visual Studio (que tiene su propia versión). También es una descarga gratuita.

En su disco duro (compruebe ambos Archivos de progtwig y Archivos de progtwig (x86)):

C: \ Archivos de progtwig (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools \ SvcConfigEditor.exe

C: \ Archivos de progtwig \ Microsoft SDK \ Windows \ v7.1 \ Bin \ NETFX 4.0 Tools \ SvcConfigEditor.exe

Si tiene varias instalaciones de Microsoft SDK, la versión que use dependerá de la versión de .NET que esté desarrollando. La herramienta generará un error que le indicará que intentó abrir el archivo .dll con la versión incorrecta.

Para usar la herramienta, señale el archivo .dll de su servicio y deje que la herramienta haga el trabajo pesado. Esto es particularmente útil si tiene servicios que hablan con servicios (servicios proxy). Además, tenga en cuenta que probablemente necesite una configuración para su cliente (en la aplicación) y las configuraciones del servidor (en el servicio web).

Me faltaba una configuración en el punto final del servidor. Tenía que hacer dos cosas:

  1. Ponga un punto final en mi configuración del lado del servidor, configurado usando SvcConfigEditor
  2. Recuerde establecer MaxArrayLength en la herramienta SvcConfigEditor

Además, ASP.NET estaba siendo exigente con respecto a este valor, por lo que puede intentar simplificar su enlace de configuración y desactivarlo:

   

Está funcionando, mostrando previamente la referencia de net.tcp: //myservice.com/Ac_Service.svc/mex al navegar por el servicio wcf, pero ahora es http://myservice.com/Ac_Service.svc?wsdl

¿Funcionará en el futuro también, sin ningún problema?