2008-10-15 26 views
8

Plataforma: IIS 6, ASP.Net 2.0 (.Net 3.5), Server 2003.¿Cómo configuro IIS para manejar cargas de archivos realmente grandes?

Estoy creando una aplicación que acepta archivos de un usuario, los procesa y devuelve un resultado. El archivo se carga utilizando HTTP POST a un formulario web ASP.Net. La aplicación espera algunos archivos grandes (cientos de MB).

Estoy utilizando SWFUpload para realizar la carga con una barra de progreso agradable, pero eso no está contribuyendo al problema, porque cuando lo puenteo usando un formulario HTML estándar apuntando a mi página de aceptación de carga, obtengo exactamente el mismo error . Al usar la barra de progreso, la carga continúa al 100% y luego falla. Con una forma estándar, el comportamiento parece ser el mismo.

Tengo un problema ahora mismo al cargar un archivo de unos 150MB. Cambié todas las configuraciones que puedo encontrar, pero todavía no tuve suerte.

He aquí un resumen de lo que he cambiado hasta el momento:

En Web.config: añadido este system.web interior:

<httpRuntime executionTimeout="3600" maxRequestLength="1536000"/> 

En machine.config: Dentro system.web , modificado:

<processModel autoConfig="true" /> 

a:

<processModel autoConfig="true" responseDeadlockInterval="00:30:00" responseRestartDeadlockInterval="00:30:00" /> 

y en MetaBase.xml: modificado: Se

AspMaxRequestEntityAllowed="204800" 

a:

AspMaxRequestEntityAllowed="200000000" 

Cuando falla la carga, me sale un error 404 de IIS. Mi formulario web no comienza a procesarse, o al menos no llega al evento Page_Load. Lancé una excepción al comienzo de ese controlador, y no se ejecuta en absoluto en archivos grandes.

Todo funciona bien con archivos más pequeños (he probado hasta unos 5,5MB). No estoy exactamente seguro de qué tamaño de archivo es el límite, pero sé que mi límite debe ser superior a 150 MB, ya que este no es el archivo más grande que el cliente deberá cargar.

¿Alguien puede ayudar?

Respuesta

4

Urlscan era activa en todos los sitios web, y tiene su propio límite de solicitud de la entidad. Yo no era consciente de que Urlscan se ejecuta en nuestro servidor, ya que era un filtro ISAPI global, no se ejecuta en mi página web individual.

Nota: para localizar los filtros ISAPI globales, haga clic derecho en la carpeta Sitios web de administración de IIS y haga clic en Propiedades y, a continuación, en la ficha filtros ISAPI

2

Cuando nos encontramos con este problema que tuvimos para aumentar el límite de tamaño de búfer de acuerdo con este artículo de KB: http://support.microsoft.com/kb/944886/en-us

Sé que esto menciona ASP, pero creo que funcionó para ASP.NET también.

Editar: Aquí hay un enlace que podrían ser más relevantes para su tema y proporcionar otras opciones:
http://weblogs.asp.net/jgalloway/archive/2008/01/08/large-file-uploads-in-asp-net.aspx

+0

El primer artículo está relacionado con las descargas de archivos, no, pero traté de todos modos, sin éxito. El artículo de Jon Galloway cubre las cosas que mencioné anteriormente. –

+1

Sí, volví a leer su pregunta y me di cuenta de que mi primer enlace era incorrecto, pero me sentí raro por simplemente sacarlo todo. Así que lo investigué un poco más y publiqué el segundo enlace como una edición. Espero que el segundo enlace haya ayudado. –

1

404 y Load falta: IIS sólo puede procesar la solicitud una vez que el POST completa está en el servidor. Por lo tanto, si el POST falla (debido a su tamaño), no puede activar los eventos de la página.

Puede probar NeatUpload http://www.brettle.com/neatupload. del manual: "De forma predeterminada, NeatUpload no limita directamente el tamaño de las cargas."

0

también puede intentar Velodoc XP Edition que tiene varias ventajas sobre NeatUpload incluyendo el hecho de que. usa extensiones ASP.NET Ajax. Consulte también the Velodoc web site para obtener más información.

0

Usted dice:

Pero 1536000 sólo es 1,5 MB?

+0

Ese tamaño está en kilobytes, por lo que en realidad es ~ 1.5GB. –

1

(Una nota para los empleados de Google):

Para IIS7 añadir a continuación a web.config (I añadido por encima de <system.serviceModel>):

<system.webServer> 
     <security> 
      <requestFiltering><requestLimits maxAllowedContentLength="262144000" /></requestFiltering> <!-- maxAllowedContentLength is in bytes. Defaults to 30,000,000 --> 
     </security> 
</system.webServer> 
Cuestiones relacionadas