(413) Solicitar Entidad Demasiado grande | uploadReadAheadSize


He escrito un servicio WCF con.NET 4.0, que está alojado en mi sistema Windows 7 x64 Ultimate con IIS 7.5. Uno de los métodos de servicio tiene un 'object' como argumento y estoy tratando de enviar un byte [] que contiene una imagen. Siempre y cuando el tamaño del archivo de esta imagen sea menor que aprox. 48KB, todo va bien. Pero si estoy tratando de cargar una imagen más grande, el servicio WCF devuelve un error: (413) Request Entity Too Large. Así que, por supuesto, he pasado 3 horas Buscando en Google el mensaje de error y cada tema que he visto sobre esto subject sugiere subir la propiedad 'uploadReadAheadSize'. Así que lo que he hecho es usar los siguientes comandos (10485760 = 10MB):

"appcmd.exe set config -section:system.webserver/serverruntime/uploadreadaheadsize: 10485760 /commit:apphost"

"cscript adsutil.vbs set w3svc/<APP_ID>/uploadreadaheadsize 10485760"

También he usado el Administrador de IIS para establecer el valor abriendo el sitio y yendo a "Configuration Editor" bajo Administración. Desafortunadamente, todavía estoy recibiendo el error de Entidad de solicitud Demasiado Grande y se está volviendo realmente frustrante.

Entonces, ¿alguien sabe qué más puedo intentar corregir este error?

 116
Author: Uwe Keim, 0000-00-00

1 answers

Ese no es el problema del IIS sino el problema del WCF. WCF por defecto limita los mensajes a 65KB para evitar ataques de denegación de servicio con mensajes grandes. Además, si no utiliza MTOM, envía byte [] a la cadena codificada base64 (33% de aumento de tamaño) = > 48KB * 1,33 = 64KB

Para resolver este problema, debe reconfigurar su servicio para aceptar mensajes más grandes. Este problema se disparó anteriormente 400 Error de solicitud incorrecta, pero en la versión más reciente WCF comenzó a usar 413, que es el código de estado correcto para este tipo de error.

Necesita establecer maxReceivedMessageSize en su enlace. También puede necesitar establecer readerQuotas.

<system.serviceModel>
  <bindings>
    <basicHttpBinding>
      <binding maxReceivedMessageSize="10485760">
        <readerQuotas ... />
      </binding>
    </basicHttpBinding>
  </bindings>  
</system.serviceModel>
 189
Author: Ladislav Mrnka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-12 12:39:33