¿Cómo aumentar el tiempo de espera de solicitud en IIS?

150

¿Cómo aumentar el tiempo de espera de la solicitud en IIS 7.0? Lo mismo se hace en la pestaña de la aplicación en los ajustes de configuración ASP en IIS 6.0. No puedo encontrar la sección de configuración asp.net en IIS 7.0

Rocas Dotnet
fuente

Respuestas:

182

Agregue esto a su configuración web

<system.web>
    <httpRuntime executionTimeout="180" />
</system.web>

https://msdn.microsoft.com/en-us/library/e1f13641(v=vs.85).aspx

Atributo opcional de TimeSpan.

Especifica el número máximo de segundos que una solicitud puede ejecutar antes de que ASP.NET la cierre automáticamente.

Este tiempo de espera se aplica solo si el atributo de depuración en el elemento de compilación es False. Para ayudar a evitar el cierre de la aplicación mientras está depurando, no establezca este tiempo de espera en un valor grande.

El valor predeterminado es "00:01:50" (110 segundos).

Jeff Doolittle
fuente
8
¿Se puede configurar esto desde la GUI de IIS 7 Manager?
Triynko
13
El tiempo de espera se especifica en segundos, el valor predeterminado es 110 segundos. Nota: ¡Este tiempo de espera se aplica solo si el atributo de depuración en el elemento <compilation> está establecido en falso!
Jowen
1
@Jowen: ¡Eres genial! Anteriormente había cambiado la depuración a falsa días atrás y no la asociaba con todos los errores de tiempo de espera que había estado recibiendo. Ahora sé.
Doug S
Tenga en cuenta que el valor máximo de executeTimeout es también el valor máximo de TimeSpan (10675199.02: 48: 05.4775807) que es ... más de lo que necesita
Antoine Pelletier
72

En el Administrador IIS, haga clic derecho en el sitio y vaya a Administrar sitio web -> Configuración avanzada . En la opción Límites de conexión , debería ver Tiempo de espera de conexión .

Greg Shackles
fuente
66
Es lo mismo que el tiempo de espera de la solicitud. Estoy tratando de migrar datos de un documento xml y el tiempo de espera más rápido. Entonces, si aumento el tiempo de espera de la conexión, esto se resolverá.
Dotnet Rocks
12
no creo que esto sea correcto, si 'HTTP Keep-Alive' está habilitado, entonces esta configuración de tiempo se aplica a él, lo que significa cuánto tiempo la conexión se mantendrá viva, no creo que esto esté relacionado con 'tiempo de espera de solicitud' (cuánto tiempo espera para la ejecución de una página) ..
visual
1
Creo que esta es la respuesta correcta en ciertas situaciones, como subir un archivo grande. Mientras esperaba subir, el
David Hammond
45

Para aumentar el tiempo de espera de la solicitud, agregue esto a web.config

<system.web>
    <httpRuntime executionTimeout="180" />
</system.web>

y para una página específica agregue esto

<location path="somefile.aspx">
    <system.web>
        <httpRuntime executionTimeout="180"/>
    </system.web>
</location>

El valor predeterminado es 90 segundos para .NET 1.x.

El valor predeterminado de 110 segundos para .NET 2.0 y versiones posteriores.

Rae Lee
fuente
3
Has ganado el +1 con la información sobre la ubicación
Gonza Oviedo
Muy útil. ¡Gracias!
jim1427
29

En IIS> = 7, una <webLimits>sección ha reemplazado ConnectionTimeout, HeaderWaitTimeout, MaxGlobalBandwidth, y MinFileBytesPerSecIIS 6 configuración de la metabase.

Configuración de ejemplo:

<configuration>
   <system.applicationHost>
      <webLimits connectionTimeout="00:01:00"
         dynamicIdleThreshold="150"
         headerWaitTimeout="00:00:30"
         minBytesPerSecond="500"
      />
   </system.applicationHost>
</configuration>

Como referencia: puede encontrar más información sobre estas configuraciones en IIS aquí . Además, no pude agregar esta sección a web.config a través del "editor de configuración" del administrador IIS, aunque apareció una vez que lo agregué y busqué la configuración.

AndrewPK
fuente
55
Esto reemplaza ConnectionTimeout, no httpRuntime's executionTimeout.
usuario2864740
15

A continuación se detallan los pasos para solucionar su problema.

  1. Abre tu IIS
  2. Vaya a la opción " Sitios ".
  3. Clic derecho del mouse.
  4. Luego abra la propiedad " Administrar sitio web ".
  5. Luego haga clic en " Configuración avanzada ".
  6. Expanda la sección " Límites de conexión ", aquí puede configurar su " tiempo de espera de conexión "

ingrese la descripción de la imagen aquí

Anjan Kant
fuente
enlace para obtener más información: docs.microsoft.com/en-us/previous-versions/dotnet/…
JPatel
11

Sé que la pregunta era sobre ASP, pero tal vez alguien encuentre útil esta respuesta.

Si tiene un servidor detrás de IIS 7.5 (por ejemplo, Tomcat). En mi caso tengo una granja de servidores con el servidor Tomcat configurado. En tal caso, puede cambiar el tiempo de espera con el Administrador de IIS:

  • vaya a Granjas de servidores -> {Nombre del servidor} -> Proxy
  • cambiar el valor en el tiempo de espera cuadro de entrada de
  • haga clic en Aplicar (esquina superior derecha)

o puede cambiarlo en el archivo cofig:

  • abrir % WinDir% \ System32 \ Inetsrv \ Config \ applicationHost.config
  • ajustar la configuración del servidor webFarm para que sea similar a la siguiente

Ejemplo:

<webFarm name="${SERVER_NAME}" enabled="true"> 
  <server address="${SERVER_ADDRESS}" enabled="true">
    <applicationRequestRouting httpPort="${SERVER_PORT}" />
  </server>
  <applicationRequestRouting>
    <protocol timeout="${TIME}" />
  </applicationRequestRouting>
</webFarm>

El $ {TIME} está en formato HH: mm: ss (por lo tanto, si desea establecerlo en 90 segundos, póngalo allí 00:01:30)

En el caso de Tomcat (y probablemente otros contenedores de servlets), debe recordar cambiar el tiempo de espera en % TOMCAT_DIR% \ conf \ server.xml (solo busque el atributo connectionTimeout en la etiqueta del conector y recuerde que se especifica en milisegundos )

Paweł Grześ
fuente
2
Tenga en cuenta que solo debe publicar respuestas que estén directamente relacionadas con la pregunta formulada. Dado que esta pregunta es puramente sobre IIS, una respuesta con información sobre Tomcat realmente no es relevante.
Andrew Barber
9
En este caso, creo que la respuesta es relevante ya que el caso de uso especificado aquí (usando el Enrutamiento de solicitud de aplicación IIS para enrutar a otro servidor) se trata de IIS. La configuración aquí también es configurable dentro del Administrador IIS. FWIW, esta respuesta me ayudó a resolver qué solicitud de tiempo de espera debería cambiar. (Dado que hay muchas configuraciones de tiempo de espera en el Administrador de IIS)
Jensen Ching
3

Use el siguiente comando de Power Shell para cambiar el tiempo de espera de ejecución (Solicitar tiempo de espera)

Tenga en cuenta que he dado esto para el sitio web predeterminado, antes de usarlos, cambie el sitio y luego intente usarlo.

 Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site'  -filter "system.web/httpRuntime" -name "executionTimeout" -value "00:01:40"

O bien, puede usar el siguiente código de C # para hacer lo mismo

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample {

    private static void Main() {

        using(ServerManager serverManager = new ServerManager()) { 
            Configuration config = serverManager.GetWebConfiguration("Default Web Site");

            ConfigurationSection httpRuntimeSection = config.GetSection("system.web/httpRuntime");
            httpRuntimeSection["executionTimeout"] = TimeSpan.Parse("00:01:40");

            serverManager.CommitChanges();
        }
    }
}

O bien, puede usar JavaScript para hacer esto.

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site";

var httpRuntimeSection = adminManager.GetAdminSection("system.web/httpRuntime", "MACHINE/WEBROOT/APPHOST/Default Web Site");
httpRuntimeSection.Properties.Item("executionTimeout").Value = "00:01:40";

adminManager.CommitChanges();

O bien, puede usar los comandos de AppCmd.

appcmd.exe set config "Default Web Site" -section:system.web/httpRuntime /executionTimeout:"00:01:40" 
Suraj Dixit
fuente