Se superó la longitud máxima de la solicitud.
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?
Si está utilizando IIS para alojar su aplicación, el tamaño predeterminado del archivo de carga es 4 MB. Para aumentarlo, utilice la siguiente sección en su web.config
:
<configuration>
<system.web>
<httpRuntime maxRequestLength="1048576" />
</system.web>
</configuration>
Para IIS7 y superior, también debe agregar las líneas siguientes:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
Nota :
maxRequestLength
se mide en kilobytesmaxAllowedContentLength
se mide en bytes
es por eso que los valores difieren en este ejemplo de configuración. (Ambos equivalen a 1 GB).
No creo que se haya mencionado aquí, pero para que esto funcione, tuve que proporcionar ambos valores en web.config:
Ensystem.web
<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
Y ensystem.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.
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 el 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>
Y en caso de que alguien esté buscando una manera de manejar esta excepción y mostrar una explicación significativa al usuario (algo 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 (((System.Web.HttpException)httpException.InnerException).WebEventCode == System.Web.Management.WebEventCodes.RuntimeErrorPostTooLarge)
{
//handle the error
Response.Write("Too big a file, dude"); //for example
}
}
(Se requiere ASP.NET 4 o posterior)
El tamaño máximo de solicitud es, por defecto,4MB (4096 KB)
Esto se explica aquí .
El artículo anterior también explica cómo solucionar este problema :)