Pregunta

Plataforma: IIS 6, ASP.Net 2.0 (.Net 3.5), Servidor 2003.

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

Estoy usando SWFUpload para realizar la carga con una buena barra de progreso, pero eso no contribuye al problema, porque cuando lo omito usando un formulario HTML estándar que apunta 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%, luego falla. Con una forma estándar, el comportamiento parece ser el mismo.

Tengo un problema en este momento al cargar un archivo de aproximadamente 150 MB. He cambiado todas las configuraciones que puedo encontrar, pero todavía no tengo suerte.

Aquí hay un resumen de lo que he cambiado hasta ahora:

En Web.config: Se agregó esto dentro de system.web:

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

En machine.config: Dentro de system.web, cambiado:

<processModel autoConfig="true" />

a:

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

y en MetaBase.xml: Modificado:

AspMaxRequestEntityAllowed="204800"

a:

AspMaxRequestEntityAllowed="200000000"

Cuando falla la carga, recibo 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 aproximadamente 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?

¿Fue útil?

Solución

Urlscan estuvo activo en todos los sitios web y tiene su propio límite de longitud de entidad de solicitud. No sabía que Urlscan se estaba ejecutando en nuestro servidor porque era un filtro ISAPI global, no se ejecutaba en mi sitio web individual.

Nota: para localizar filtros ISAPI globales, haga clic con el botón derecho en la carpeta Sitios web en Administrador de IIS y haga clic en Propiedades, luego en la pestaña Filtros ISAPI.

Otros consejos

(Una nota para googlers):

Para IIS7 agregue a continuación a web.config (agregué arriba <system.serviceModel>):

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

Cuando nos encontramos con este problema, tuvimos que aumentar el límite de tamaño del 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 también funcionó para ASP.NET.

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

404 y falta Page_Load: IIS solo puede procesar la solicitud una vez que la POST completa está en el servidor. Por lo tanto, si la 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: & Quot; Por defecto, NeatUpload no limita directamente el tamaño de las cargas. & Quot;

También puede probar Velodoc XP Edition que tiene varias ventajas sobre NeatUpload, incluido el hecho de que utiliza Extensiones ASP.NET Ajax. Consulte también el sitio web de Velodoc para obtener más información.

Usted dice:

¿Pero 1536000 es solo 1.5MB?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top