Come aumentare il timeout delle richieste in IIS?


150

Come aumentare il timeout delle richieste in IIS 7.0? Lo stesso viene fatto nella scheda Applicazione nelle impostazioni di configurazione ASP in IIS 6.0. Non riesco a trovare la sezione di configurazione di asp.net in IIS 7.0

Risposte:


182

Aggiungi questo al tuo Web Config

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

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

Attributo TimeSpan opzionale.

Specifica il numero massimo di secondi che una richiesta può eseguire prima di essere automaticamente chiusa da ASP.NET.

Questo timeout si applica solo se l'attributo debug nell'elemento compilation è False. Per evitare di arrestare l'applicazione durante il debug, non impostare questo timeout su un valore elevato.

L'impostazione predefinita è "00:01:50" (110 secondi).


8
Questo può essere impostato dalla GUI di IIS 7 Manager?
Triynko,

13
Il timeout è specificato in secondi, il valore predefinito è 110 secondi. Nota: questo timeout si applica solo se l'attributo debug nell'elemento <compilation> è impostato su false!
Jowen,

1
@Jowen: Rock! In precedenza avevo modificato il debug in falsi giorni fa e non lo associavo a tutti gli errori di timeout che avevo ricevuto. Adesso lo so.
Doug S,

Si noti che il valore massimo di esecuzione Timeout è anche il valore massimo di TimeSpan (10675199.02: 48: 05.4775807) che è ... più di quanto sia necessario
Antoine Pelletier

72

In Gestione IIS, fai clic con il pulsante destro del mouse sul sito e vai su Gestisci sito Web -> Impostazioni avanzate . Sotto l' opzione Limiti di connessione , dovresti visualizzare il timeout della connessione .


6
È lo stesso del timeout della richiesta. Sto cercando di migrare i dati da un documento XML e il timeout più richiesto. Quindi, se aumento il timeout della connessione, questo verrà risolto.
Dotnet Rocks

12
non penso che sia corretto, se "HTTP Keep-Alive" è abilitato, quindi questa impostazione di temporizzazione si applica ad essa, il che significa per quanto tempo la connessione rimarrà in vita, non penso che sia correlata al "timeout della richiesta" (per quanto tempo IIS attende per l'esecuzione di una pagina) ..
visual

1
Penso che questa sia la risposta giusta in determinate situazioni, come il caricamento di un file di grandi dimensioni. In attesa di caricare, il
David Hammond

45

Per aumentare il timeout della richiesta, aggiungere questo a web.config

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

e per una pagina specifica aggiungere questo

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

L'impostazione predefinita è 90 secondi per .NET 1.x.

110 secondi predefiniti per .NET 2.0 e versioni successive.


3
Hai ottenuto il +1 con le informazioni sulla posizione
Gonza Oviedo,

Molto utile. Grazie!
jim1427

29

In IIS> = 7, una <webLimits>sezione ha sostituito ConnectionTimeout, HeaderWaitTimeout, MaxGlobalBandwidth, e MinFileBytesPerSecIIS 6 impostazioni di metabase.

Esempio di configurazione:

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

Per riferimento: ulteriori informazioni su queste impostazioni in IIS sono disponibili qui . Inoltre, non sono stato in grado di aggiungere questa sezione a web.config tramite l '"editor di configurazione" del gestore IIS, anche se è stato visualizzato una volta aggiunto e cercato nella configurazione.


5
Questo sostituisce ConnectionTimeout, non httpRuntime executionTimeout.
user2864740

15

Di seguito sono riportati i passaggi per risolvere il problema.

  1. Apri il tuo IIS
  2. Vai all'opzione " Siti ".
  3. Tasto destro del mouse.
  4. Quindi aprire la proprietà " Gestisci sito Web ".
  5. Quindi fare clic su " Impostazioni avanzate ".
  6. Espandi la sezione " Limiti di connessione ", qui puoi impostare il " timeout di connessione "

inserisci qui la descrizione dell'immagine



11

So che la domanda riguardava ASP ma forse qualcuno troverà utile questa risposta.

Se si dispone di un server dietro IIS 7.5 (ad esempio Tomcat). Nel mio caso ho una server farm con il server Tomcat configurato. In tal caso è possibile modificare il timeout utilizzando Gestione IIS:

  • vai su Server Farm -> {Nome server} -> Proxy
  • modificare il valore nella casella di immissione Timeout
  • fai clic su Applica (angolo in alto a destra)

oppure puoi cambiarlo nel file cofig:

  • aprire % WinDir% \ System32 \ Inetsrv \ Config \ applicationHost.config
  • regolare la configurazione del server webFarm in modo che sia simile al seguente

Esempio:

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

Il $ {TIME} è in HH: ss mm formato (quindi se si desidera impostarla a 90 secondi poi messo lì 00:01:30)

Nel caso di Tomcat (e probabilmente di altri container servlet) devi ricordare di modificare il timeout in % TOMCAT_DIR% \ conf \ server.xml (cerca l' attributo connectionTimeout nel tag Connector e ricorda che è specificato in millisecondi )


2
Si noti che è necessario pubblicare solo risposte direttamente correlate alla domanda posta. Poiché questa domanda riguarda esclusivamente IIS, una risposta con informazioni su Tomcat in realtà non è rilevante.
Andrew Barber,

9
In questo caso, ritengo che la risposta sia pertinente in quanto il caso d'uso specificato qui (utilizzando il routing di richiesta applicazione IIS per instradare verso un altro server) riguarda IIS. L'impostazione qui è configurabile anche in Gestione IIS. FWIW, questa risposta mi ha aiutato a risolvere quale timeout della richiesta dovrei cambiare. (Dato che ci sono molte impostazioni di timeout in Gestione IIS)
Jensen Ching,

3

Utilizzare il comando Power shell di seguito per modificare il timeout di esecuzione (Richiesta timeout)

Si prega di notare che ho dato questo per il sito Web predefinito, prima di utilizzare questi si prega di cambiare il sito e quindi provare a utilizzare questo.

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

In alternativa, è possibile utilizzare il codice C # di seguito per fare la stessa cosa

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();
        }
    }
}

In alternativa, puoi utilizzare JavaScript per farlo.

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();

In alternativa, è possibile utilizzare i comandi AppCmd.

appcmd.exe set config "Default Web Site" -section:system.web/httpRuntime /executionTimeout:"00:01:40" 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.