asp.net - net - Longitud máxima de solicitud superada.
maxrequestlength max value (14)
Recibo el error Se excedió la longitud máxima de la solicitud cuando intento cargar un video en mi sitio.
¿Cómo puedo solucionar esto?
El tamaño máximo de solicitud es, de forma predeterminada, 4 MB (4096 KB)
Esto se explica aquí: http://support.microsoft.com/default.aspx?scid=kb;EN-US;295626
El artículo anterior también explica cómo solucionar este problema :)
Hay un elemento en web.config para configurar el tamaño máximo del archivo cargado:
<httpRuntime
maxRequestLength="1048576"
/>
Me sorprendió el hecho de que nuestro archivo web.config tiene varias secciones system.web: funcionó cuando agregué <httpRuntime maxRequestLength = "1048576" /> a la sección system.web que en el nivel de configuración.
No creo que se haya mencionado aquí, pero para que esto funcione, tuve que proporcionar estos dos valores en la web.config:
En system.web
<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
Y en system.webServer
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
IMPORTANTE : Ambos valores deben coincidir. En este caso, mi carga máxima es de 1024 megabytes.
maxRequestLength tiene 1048576 KILOBYTES , y maxAllowedContentLength tiene 1073741824 BYTES .
Sé que es obvio, pero es fácil pasarlo por alto.
Para resumir todas las respuestas en un solo lugar:
<system.web>
<httpRuntime targetFramework="4.5.2" maxRequestLength="1048576"/>
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
Reglas:
- El valor de maxRequestLength (expresado en kb) debe coincidir con maxAllowedContentLength (expresado en bytes).
- la mayoría de las veces su sección system.web puede que ya contenga un "httpRuntime". establece tu targetFramework a la versión de tu .net utilizada.
Notas:
- el valor predeterminado para maxRequestLength es 4096 (4mb). El valor máximo es 2,147,483,647
- el valor predeterminado para maxAllowedContentLength es 30,000,000 (alrededor de 30mb). El valor máximo es 4,294,967,295.
más información MSDN
Puede que valga la pena señalar que es posible que desee limitar este cambio a la URL que espera que se utilice para la carga en lugar de a todo su sitio.
<location path="Documents/Upload">
<system.web>
<!-- 50MB in kilobytes, default is 4096 or 4MB-->
<httpRuntime maxRequestLength="51200" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<!-- 50MB in bytes, default is 30000000 or approx. 28.6102 Mb-->
<requestLimits maxAllowedContentLength="52428800" />
</requestFiltering>
</security>
</system.webServer>
</location>
Puedo agregar a la configuración web sin compilar
<system.web>
<httpRuntime maxRequestLength="1024" executionTimeout="3600" />
<compilation debug="true"/>
</system.web>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>
Si está utilizando IIS para alojar su aplicación, entonces el tamaño de archivo de carga predeterminado es 4MB. Para aumentarlo, use esta sección a continuación en su web.config -
<configuration>
<system.web>
<httpRuntime maxRequestLength="1048576" />
</system.web>
</configuration>
Para IIS7 y versiones posteriores, también debe agregar las líneas siguientes:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
Nota :
-
maxRequestLength
se mide en kilobytes -
maxAllowedContentLength
se mide en bytes
Es por eso que los valores difieren en este ejemplo de configuración. (Ambos son equivalentes a 1 GB)
Si no puede actualizar los archivos de configuración pero controlar completamente el código que maneja los archivos cargados, use HttpContext.Current.Request.GetBufferlessInputStream(true)
.
El valor true
para el parámetro disableMaxRequestLength
le dice al marco que ignore los límites de solicitud configurados.
Para una descripción detallada visite https://msdn.microsoft.com/en-us/library/hh195568(v=vs.110).aspx
Si tiene una solicitud de acceso a una aplicación en el sitio, asegúrese de establecer maxRequestLength en la raíz web.config. El maxRequestLength en el web.config de las aplicaciones parece ser ignorado.
También me molestó por días. Modifiqué el archivo web.config pero no funcionó. Resultó que hay dos archivos Web.config en mi proyecto, y debería modificar el que está en el directorio ROOT , no los otros. Espero que esto sea de ayuda.
Tuve que editar el archivo C:/Windows/System32/inetsrv/config/applicationHost.config
y agregar <requestLimits maxAllowedContentLength="1073741824" />
al final del ...
<configuration>
<system.webServer>
<security>
<requestFiltering>
sección.
Y en caso de que alguien esté buscando una manera de manejar esta excepción y mostrarle una explicación significativa al usuario (algo así como "estás subiendo un archivo que es demasiado grande"):
//Global.asax
private void Application_Error(object sender, EventArgs e)
{
var ex = Server.GetLastError();
var httpException = ex as HttpException ?? ex.InnerException as HttpException;
if(httpException == null) return;
if(httpException.WebEventCode == WebEventCodes.RuntimeErrorPostTooLarge)
{
//handle the error
Response.Write("Too big a file, dude"); //for example
}
}
(ASP.NET 4 o posterior requerido)
maxRequestLength (longitud en KB) Aquí como ej. Tomé 1024 (1MB) maxAllowedContentLength (la longitud en bytes) debe ser igual que su maxRequestLength (1048576 bytes = 1MB).
<system.web>
<httpRuntime maxRequestLength="1024" executionTimeout="3600" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>
</system.webServer>