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 'objeto' como argumento y estoy tratando de enviar un byte [] que contiene una imagen. Siempre que el tamaño del archivo de esta imagen sea inferior a aprox. 48 KB, todo va bien. Pero si estoy tratando de subir una imagen más grande, el servicio WCF devuelve un error: (413) Request Entity Too Large.
por supuesto, he pasado 3 horas buscando en Google el mensaje de error y cada tema que he visto sobre este tema sugiere que aparezca la propiedad 'uploadReadAheadSize'. Entonces, 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 al "Editor de configuración" en Administración. Desafortunadamente, sigo recibiendo el error Solicitar entidad demasiado grande y se está volviendo muy frustrante.
Entonces, ¿alguien sabe qué más puedo tratar de corregir este error?
Respuestas:
Ese no es un problema de IIS sino el problema de WCF. WCF limita de forma predeterminada los mensajes a 65 KB para evitar ataques de denegación de servicio con mensajes grandes. Además, si no utiliza MTOM, envía el byte [] a la cadena codificada en base64 (aumento del tamaño del 33%) => 48 KB * 1,33 = 64 KB
Para resolver este problema, debe volver a configurar su servicio para aceptar mensajes más grandes. Este problema 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 encuadernación. También puede necesitar configurarreaderQuotas
.fuente
Estaba teniendo el mismo problema con IIS 7.5 con un servicio WCF REST. Intentando cargar a través de POST cualquier archivo por encima de 65k y devolverá el Error 413 "Solicitar entidad demasiado grande".
Lo primero que debe comprender es qué tipo de enlace ha configurado en web.config. Aquí hay un gran artículo ...
BasicHttpBinding vs WsHttpBinding vs WebHttpBinding
Si tiene un servicio REST, debe configurarlo como "webHttpBinding". Aquí está la solución:
fuente
Tuve el mismo problema y la configuración lo
uploadReadAheadSize
resolvió:http://www.iis.net/configreference/system.webserver/serverruntime
"El valor debe estar entre 0 y 2147483647."
Se configura fácilmente en applicationHost.config-fle si no desea hacer un cmd.
Está ubicado en
WindowsFOLDER\System32\inetsrv\config
(servidor 2008).Debe abrirlo con el bloc de notas. Haga una copia de seguridad del archivo primero.
De acuerdo con los comentarios en la configuración, la forma recomendada de desbloquear secciones es mediante el uso de una etiqueta de ubicación:
Para que pueda escribir en la parte inferior (ya que no existe antes). Escribo
maxvalue
aquí, escribe tu propio valor si quieres.Si lo pones antes,
</configuration>
por ejemplo, sabes dónde lo tienes.Espero que eso resuelva tus problemas. Fue un problema de sobrecarga SSL para mí, donde demasiadas publicaciones congelaron la aplicación, generando un error (413) Solicitar entidad demasiado grande .
fuente
maxReceivedMessageSize
int.MaxValue, esto hizo el truco. Me pregunto si hay alguna preocupación importante con la configuración de esta opción en int.MaxValue también.Recibí este mensaje de error, aunque tenía la
max
configuración establecida dentro del enlace de mi archivo de configuración del servicio WCF:Parecía que estas configuraciones de enlace no se estaban aplicando, por lo tanto, el siguiente mensaje de error:
.
El problema
Me di cuenta de que el
name=""
atributo dentro de la<service>
etiqueta del noweb.config
es un campo de texto libre, como pensé que era. Es el nombre completo de una implementación de un contrato de servicio como se menciona en esta página de documentación .Si eso no coincide, ¡no se aplicará la configuración de enlace!
Espero que eso le ahorre a alguien algo de dolor ...
fuente
Si se encuentra con este problema a pesar de probar todas las soluciones en este hilo y se está conectando al servicio a través de SSL (por ejemplo, https), esto podría ayudar:
http://forums.newatlanta.com/messages.cfm?threadid=554611A2-E03F-43DB-92F996F4B6222BC0&#top
Para resumir (en caso de que el enlace falle en el futuro), si sus solicitudes son lo suficientemente grandes, la negociación del certificado entre el cliente y el servicio fallará al azar. Para evitar que esto suceda, deberá habilitar una determinada configuración en sus enlaces SSL. Desde su servidor IIS, estos son los pasos que deberá seguir:
netsh http show sslcert
. Esto le dará su configuración actual. Querrá guardar esto de alguna manera para poder consultarlo nuevamente más tarde.netsh http delete sslcert <ipaddress>:<port>
donde<ipaddress>:<port>
está la IP: puerto que se muestra en la configuración que guardó anteriormente.netsh http add sslcert
aquí (MSDN) pero en la mayoría de los casos su comando se verá así:netsh http add sslcert ipport=<ipaddress>:<port> appid=<application ID from saved config including the {}> certhash=<certificate hash from saved config> certstorename=<certificate store name from saved config> clientcertnegotiation=enable
Si tiene varios enlaces SSL, repetirá el proceso para cada uno de ellos. Espero que esto ayude a salvar a alguien más las horas y las horas de dolor de cabeza que me causó este problema.
EDITAR: En mi experiencia, en realidad no puede ejecutar el
netsh http add sslcert
comando desde la línea de comando directamente. Primero deberá ingresar el indicador de netsh escribiendonetsh
y luego emitir su comando comohttp add sslcert ipport=...
para que funcione.fuente
Esto me ayudó a resolver el problema (una línea, dividida para facilitar la lectura / capacidad de copia):
fuente
Para mí, establecer el
uploadReadAheadSize
int.MaxValue también solucionó el problema, después de aumentar también los límites en el enlace WCF.Parece que, cuando se usa SSL, todo el cuerpo de la entidad de solicitud está precargado, para lo cual se utiliza esta propiedad de metabase.
Para más información, ver:
La página no se mostró porque la entidad de solicitud es demasiado grande. iis7
fuente
Para cualquier otra persona que esté buscando un error 413 WCF de IIS: Solicitar entidad a gran tamaño y usar un servicio WCF en Sharepoint, esta es la información para usted. La configuración en el host de la aplicación y web.config sugerida en otros sitios / publicaciones no funciona en SharePoint si se usa MultipleBaseAddressBasicHttpBindingServiceHostFactory. Puede usar SP Powershell para obtener el servicio SPWebService.Content, crear un nuevo objeto SPWcvSettings y actualizar la configuración como se indica arriba para su servicio (no existirán). Recuerde usar el nombre del servicio (por ejemplo, [yourservice.svc]) al crear y agregar la configuración. Consulte este sitio para obtener más información https://robertsep.wordpress.com/2010/12/21/set-maximum-upload-filesize-sharepoint-wcf-service
fuente
En mi caso, tuve que aumentar el "Tamaño máximo de mensaje recibido" de la Ubicación de recepción en BizTalk. Eso también tiene un valor predeterminado de 64K y, por lo tanto, BizTAlk rebotó todos los mensajes independientemente de lo que configuré en mi web.config
fuente
He podido resolver esto ejecutando una llamada ficticia (por ejemplo, IsAlive devuelve verdadero) justo antes de la solicitud con gran contenido en el mismo canal / cliente wcf. Aparentemente, la negociación de SSL se realiza en la primera llamada. Por lo tanto, no es necesario aumentar Uploadreadaheadsize.
fuente
Por problema, el servidor remoto devolvió una respuesta inesperada: (413) Solicitar entidad demasiado grande en WCF con Resful
por favor vea mi configuración de explicación
fuente
En mi caso, recibí este mensaje de error porque cambié el espacio de nombres del servicio y la etiqueta de servicios apuntaba al espacio de nombres anterior. Actualicé el espacio de nombres y el error desaparece:
fuente
Tengo un error similar en IIS Express con Visual Studio 2017.
Resuelve esto editando
\.vs\config\applicationhost.config
. CambiaserverRuntime
deDeny
a meAllow
gusta esto:Si este valor no se edita, obtendrá un error como este al configurar
uploadReadAheadSize
:Luego edite
Web.config
con los siguientes valores:fuente