martes, 4 de marzo de 2014

Timeouts de Web Service en carga de archivos grandes

En esta semana hemos tenido la oportunidad de agregar funcionalidad a un web service existente. Dicha funcionalidad consta de subir una lista de fotos desde un celular al servicio web anteriormente mencionado. A continuación, la firma del método en cuestión:


Eventualmente, cada foto subida desde el celular, puede superar el tamaño establecido como límite en un servicio web asp.net (4096KB - 4Mb), por lo que debemos meter mano en la configuración por defecto para aumentar estos límites.

Abrimos el archivo web.config y dentro de la sección  System.Web tenemos el tag HttpRuntime y dentro del mismo, encontramos maxRequestLenght y executionTimeout que son los valores que debemos aumentar dependiendo de nuestras necesidades:
 

Adicionalmente, si vamos a implementar este web service en un servidor con IIS 7 o superior, debemos cambiar el límite mencionado anteriormente en OTRO lugar. El tag en cuestión es maxAllowedContentLength el cual se encuentra dentro del tag requestLimits, que a su vez está dentro de system.webServer


Luego de haber modificado éstos valores, queda todo funcionando OK, verdad?
En nuestro caso no fue así. Debimos aumentar un valor adicional dentro de la configuración de IIS, el cual les paso a detallar:

Primero, vamos a la configuración avanzada del sitio como se muestra en la imagen a continuación:

 
Luego, expandimos la sección límites y cambiamos el valor de "Tiempo de espera de la conexión" y That's it!
 
 
No puedo dejar de darle crédito del último tip, al colega Roberto Broggi encargado de IT en la empresa para la cual implementamos la solución.
 
Espero les sea de utilidad, hasta la próxima!