2011-01-21 10 views
11

Actualmente tengo un proyecto ASP.NET MVC que tiene carga de archivos y funciona muy bien si el usuario tiene una conexión lo suficientemente buena y su archivo es de un tamaño razonable.ASP.NET MVC Cargar archivo time out

El problema que me encuentro es que a veces un usuario puede tener una conexión de 56k (cómo pueden vivir con ella en este día y edad, no sé) o está cargando un archivo más grande o una combinación de los dos.

Me gustaría mantener un pequeño tiempo de espera para las páginas normales (90 segundos más o menos), pero permitir un mayor tiempo de espera para las acciones donde un usuario está cargando. Esta es solo una acción, así que no me importa poner código dentro de esa acción singular en lugar de una solución genérica.

En última instancia, una solución que aumente automáticamente el tiempo de espera si Request.Files.Count> 0 sería la mejor.

+5

Estoy en acceso telefónico. Vivo en Jamaica. –

+0

¿Qué es el tiempo de espera? Si no obtiene nada del cliente después de 90 segundos más o menos, probablemente no va a subir nada con éxito. – chris

+0

Estoy recibiendo datos continuamente, chris, pero enviar incluso 10 megas en más de 56k llevará más de 90 segundos. – ckknight

Respuesta

8

No estoy seguro de si esto funcionaría en un proyecto de MVC, pero podría tratar de crear una ubicación en su web.config y establecer el tiempo de espera de ejecución solo para su URL de carga. Por ejemplo:

<location path="YourUrl"> 
    <system.web> 
    <httpRuntime executionTimeout="9001"/> 
    </system.web> 
</location> 
+0

Esto funciona. También puede agregar maxRequestLength aquí (en la etiqueta httpRuntime) si desea permitir solicitudes más grandes solo al controlador de carga. –

+2

¡su tiempo de espera de ejecución es más de 9000! –

2

Es posible que tenga que aumentar el tiempo de espera en web.config:

<httpRuntime executionTimeout="01:00:00" /> 

Ahora bien, esto es reemplazable en archivos web.config sub significa que si se quiere aumentar el tiempo de espera sólo para la escritura de la carga se podría escribir un controlador HTTP genérico que manejará las cargas y lo colocará en su propia subcarpeta con su propio web.config.

0

Posible problema: Si no es un tiempo de espera debido a la actividad cero, tal vez es algo que ver con el construido en la restricción de tamaño, en el httpRuntime sección de web.config se podría añadir/aumentar maxRequestLength="" a su límite de tamaño

Cuestiones relacionadas