asp.net iis - Longitud máxima de solicitud superada.




error value (13)

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>

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?


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


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.


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>

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

<httpRuntime 
    maxRequestLength="1048576"
  />


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)


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)


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.


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


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>

Una forma de hacerlo es establecer el tamaño máximo en web.config como ya se ha indicado anteriormente, por ejemplo

<system.web>         
    <httpRuntime maxRequestLength="102400" />     
</system.web>

luego, cuando maneja el evento de carga, verifique el tamaño y si supera una cantidad específica, puede atraparlo, por ejemplo

protected void btnUploadImage_OnClick(object sender, EventArgs e)
{
    if (fil.FileBytes.Length > 51200)
    {
         TextBoxMsg.Text = "file size must be less than 50KB";
    }
}






asp.net iis file-upload