asp.net - files - requestlimits maxallowedcontentlength asp net




Longitud máxima de solicitud superada. (10)

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?



Hay un elemento en web.config para configurar el tamaño máximo del archivo cargado:

<httpRuntime 
    maxRequestLength="1048576"
  />

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


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 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.


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>




file-upload