Comment augmenter le délai d'expiration des demandes dans IIS?

150

Comment augmenter le délai d'expiration des demandes dans IIS 7.0? La même chose est faite sous l'onglet Application dans les paramètres de configuration ASP dans IIS 6.0. Je ne parviens pas à trouver la section de configuration asp.net dans IIS 7.0

Rochers Dotnet
la source

Réponses:

182

Ajoutez ceci à votre configuration Web

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

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

Attribut TimeSpan facultatif.

Spécifie le nombre maximal de secondes qu'une demande est autorisée à s'exécuter avant d'être automatiquement arrêtée par ASP.NET.

Ce délai d'expiration s'applique uniquement si l'attribut de débogage dans l'élément de compilation est False. Pour éviter d’arrêter l’application pendant le débogage, ne définissez pas ce délai d’expiration sur une valeur élevée.

La valeur par défaut est "00:01:50" (110 secondes).

Jeff Doolittle
la source
8
Cela peut-il être défini à partir de l'interface graphique du gestionnaire IIS 7?
Triynko
13
Le délai d'expiration est spécifié en secondes, la valeur par défaut est de 110 secondes. Remarque: Ce délai d'expiration s'applique uniquement si l'attribut de débogage dans l'élément <compilation> est défini sur false!
Jowen
1
@Jowen: Vous basculez! J'avais précédemment changé le débogage en faux il y a quelques jours et je ne l'associais pas à toutes les erreurs de temporisation que j'avais reçues. Maintenant je sais.
Doug S
Notez que la valeur maximale de executionTimeout est également la valeur maximale de TimeSpan (10675199.02: 48: 05.4775807) qui est ... plus ce dont vous avez besoin
Antoine Pelletier
72

Dans IIS Manager, cliquez avec le bouton droit sur le site et allez dans Gérer le site Web -> Paramètres avancés . Sous l' option Limites de connexion , vous devriez voir Délai de connexion .

Greg Shackles
la source
6
Est-ce la même chose que le délai d'expiration de la demande. J'essaye de migrer des données à partir d'un document xml et du délai d'attente de reuqest. Donc, si j'augmente le délai de connexion, cela sera résolu.
Dotnet Rocks
12
Je ne pense pas que ce soit correct, si 'HTTP Keep-Alive' est activé, alors ce paramètre de synchronisation s'applique à lui, ce qui signifie combien de temps la connexion restera active, je ne pense pas que cela soit lié au 'timeout de la demande' (combien de temps il attend pour l'exécution d'une page) ..
visuel
1
Je pense que c'est la bonne réponse dans certaines situations, comme le téléchargement d'un gros fichier. En attendant le téléchargement, le
David Hammond
45

Pour augmenter le délai d'expiration de la demande, ajoutez ceci à web.config

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

et pour une page spécifique ajoutez ceci

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

La valeur par défaut est de 90 secondes pour .NET 1.x.

La valeur par défaut de 110 secondes pour .NET 2.0 et versions ultérieures.

Rae Lee
la source
3
Vous avez gagné le +1 avec les informations sur l'emplacement
Gonza Oviedo
Très utile. Merci!
jim1427
29

Dans IIS> = 7, une <webLimits>section a remplacé ConnectionTimeout, HeaderWaitTimeout, MaxGlobalBandwidthet MinFileBytesPerSecIIS 6 paramètres de la métabase.

Exemple de configuration:

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

Pour référence: plus d'informations sur ces paramètres dans IIS peuvent être trouvées ici . De plus, je n'ai pas pu ajouter cette section au web.config via "l'éditeur de configuration" du gestionnaire IIS, même si elle est apparue une fois que je l'ai ajoutée et recherché la configuration.

AndrewPK
la source
5
Cela remplace ConnectionTimeout, pas celui de httpRuntime executionTimeout.
user2864740
15

Vous trouverez ci-dessous des étapes pour résoudre votre problème.

  1. Ouvrez votre IIS
  2. Allez dans l' option " Sites ".
  3. Clic droit de la souris.
  4. Ensuite, ouvrez la propriété " Gérer le site Web ".
  5. Cliquez ensuite sur " Paramètres avancés ".
  6. Développez la section " Limites de connexion ", ici vous pouvez définir votre " délai de connexion "

entrez la description de l'image ici

Anjan Kant
la source
lien pour plus d'informations: docs.microsoft.com/en-us/previous-versions/dotnet
...
11

Je sais que la question portait sur ASP, mais peut-être que quelqu'un trouvera cette réponse utile.

Si vous avez un serveur derrière IIS 7.5 (par exemple Tomcat). Dans mon cas, j'ai une ferme de serveurs avec le serveur Tomcat configuré. Dans ce cas, vous pouvez modifier le délai d'expiration à l'aide du gestionnaire IIS:

  • allez dans Batteries de serveurs -> {Nom du serveur} -> Proxy
  • modifier la valeur dans la zone de saisie Time-out
  • cliquez sur Appliquer (coin supérieur droit)

ou vous pouvez le changer dans le fichier cofig:

  • ouvrez % WinDir% \ System32 \ Inetsrv \ Config \ applicationHost.config
  • ajuster la configuration du serveur webFarm pour qu'elle soit similaire à ce qui suit

Exemple:

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

Le $ {TIME} est au format HH: mm: ss (donc si vous voulez le mettre à 90 secondes, mettez-y 00:01:30)

Dans le cas de Tomcat (et probablement d'autres conteneurs de servlet), vous devez vous rappeler de modifier le délai d'expiration dans % TOMCAT_DIR% \ conf \ server.xml (recherchez simplement l' attribut connectionTimeout dans la balise Connector , et rappelez-vous qu'il est spécifié en millisecondes )

Paweł Grześ
la source
2
Veuillez noter que vous ne devez publier que des réponses directement liées à la question posée. Étant donné que cette question concerne uniquement IIS, une réponse contenant des informations sur Tomcat n'est vraiment pas pertinente.
Andrew Barber
9
Dans ce cas, je pense que la réponse est pertinente car le cas d'utilisation spécifié ici (en utilisant IIS Application Request Routing pour acheminer vers un autre serveur) concerne IIS. Le paramètre ici est également configurable dans le Gestionnaire IIS. FWIW, cette réponse m'a aidé à déterminer le délai d'expiration de la demande à modifier. (Puisqu'il y a beaucoup de paramètres de délai d'expiration dans le gestionnaire IIS)
Jensen Ching
3

Utilisez la commande Power Shell ci-dessous pour modifier le délai d'exécution (Request Timeout)

Veuillez noter que j'ai donné ceci pour le site Web par défaut, avant de les utiliser, veuillez changer le site, puis essayez de l'utiliser.

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

Ou, vous pouvez utiliser le code C # ci-dessous pour faire la même chose

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

Ou, vous pouvez utiliser le JavaScript pour ce faire.

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

Ou, vous pouvez utiliser les commandes AppCmd.

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