none
Exception al consumir método de WS WFC: "El servidor remoto devolvió una respuesta inesperada: (413) Request Entity Too Large." RRS feed

  • Pregunta

  • Hola a todos, tengo un servicio WCF que recibe un string y retorna otro string (en realidad es un JSON con contenido de BD que puede ser muuuuuy largo), en un método del servicio cuando se lo invoca salta una excepcion y el Exception.Message es "El servidor remoto devolvió una respuesta inesperada: (413) Request Entity Too Large.", alguien podría por favor hecharme una mano en resolver este problema.

    Saludos


    Roy Sillerico

    martes, 5 de abril de 2016 16:22

Respuestas

Todas las respuestas

  • Eso quiere decir que el tamaño de los paquetes que transmites excede del máximo configurado en el fichero .config. Abre el .config y fíjate en la sección donde está definido el servicio WCF. Verás que hay varios parámetros con nombres tales como MaxRequestLength o algo parecido, que tienen limitaciones del orden de 65536 bytes de forma predeterminada.

    Puedes aumentar los límites de tamaño modificándolos en el .config (usa el editor de configuración de WCF si no quieres trastearlos a mano), pero si los subes mucho te toparás con otro límite (de 8 MB por defecto, si no me equivoco) que no es culpa de WCF sino de IIS. También se puede aumentar este último metiendo un parámetro en el web.config. Pero si realmente tienes que transmitir datos así de largos, es preferible que no lo hagas de un solo golpe, porque acabarás teniendo problemas por fallo en las comunicaciones o por capacidad de memoria o por timeout, etc. Es preferible que fracciones la comunicación, por ejemplo, si estás transmitiendo un array de objetos no lo transmitas de una vez, sino por bloques de un número moderado de items usando un bucle. O, si los dos extremos son .Net, utiliza una configuración de Streaming para el servicio WCF.

    martes, 5 de abril de 2016 17:08
  • En realidad primero tenia este error:

    "The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element."

    El cual lo solucione haciendo cosas como las que dices guiandome en esto:

    https://datafull.co/p/wcf-como-aumentar-la-cuota-de-tamano-de-mensaje

    Despues de hacer lo que indica en la URL, ahora tengo el error: "El servidor remoto devolvió una respuesta inesperada: (413) Request Entity Too Large."

    Ahora es con este ultimo error con el que estoy trancado.

    Una pregunt mas, las configuraciones debo acerlas en app.config del que consume el servicio? en el app.config del servicio publicado? o en ambos?.

    Saludos.

    martes, 5 de abril de 2016 18:13
  • Hay que tocar en ambos .config, ya que hay límites tanto para los paquetes enviados como para los recibidos. Concretamente, en el lado servidor tendrás que poner un valor grande en el maxReceivedMessageSize del binding, y puede ser que también tengas que tocar en readerQuotas.

    Aparte de eso, puede que te salga el 413 Request Entity Too Large debido al otro límite que yo te decía, es decir, los 8 MB del IIS, (no de WCF). La forma de arreglarlo depende de la versión de IIS. Creo recordar que en los IIS modernos había que meter algo parecido a lo siguiente en el <system.web> del web.config:

    <httpRuntime maxRequestLength="102400000" />

    martes, 5 de abril de 2016 18:30
  • martes, 5 de abril de 2016 19:56