Runtime de serveur <serverRuntime>

Vue d’ensemble

L’élément <serverRuntime> configure les paramètres suivants qui sont liés au runtime du serveur Internet Information Services (IIS) 7 :

  • Quand l’attribut enabled est défini sur true, IIS 7 est configuré pour fournir du contenu sur l’URL où l’élément <serverRuntime> est configuré ; quand l’attribut enabled est défini sur false, IIS 7 est configuré pour ne pas fournir de contenu sur cette URL.

  • L’attribut alternateHostName spécifie un nom d’hôte différent du nom de l’ordinateur indiqué dans l’en-tête HTTP Content-location.

  • L’attribut appConcurrentRequestLimit spécifie le nombre maximal de demandes simultanées qui peuvent être mises en file d’attente pour une application.

  • L’attribut enableNagling active ou désactive le nagling, qui est une optimisation pour HTTP sur TCP visant à augmenter l’efficacité en essayant de réduire le nombre de paquets requis avant l’envoi des données. Voici comment le nagling fonctionne : il attend d’envoyer un paquet jusqu’à ce que sa zone de données soit pleine, jusqu’à l’expiration d’un délai de 200 millisecondes ou jusqu’à ce que l’expéditeur indique qu’il a terminé l’envoi des données. Les versions 5.1 et antérieures d’IIS utilisent le nagling pour toutes les données envoyées au client.

    Remarque

    Le nagling peut présenter cet inconvénient : si une extension ne remplit pas le paquet, il reste un délai de 200 millisecondes avant l’envoi de la réponse. Ce comportement s’observe le plus souvent quand vous utilisez des extensions ISAPI qui prennent en charge un en-tête HTTP keep-alive dans la réponse envoyée au client. Dans ce cas, IIS ne ferme pas la connexion après la réponse, ce qui explique le délai d’attente de 200 millisecondes du paquet final.

  • IIS 7 vérifie l’état de deux attributs pour déterminer le niveau de trafic d’une URL particulière. L’attribut frequentHitThreshold configure le nombre de demandes, et l’attribut frequentHitTimePeriod configure la durée autorisée avant que cette URL soit considérée comme une URL fréquemment demandée. Ces informations sont utilisées lors de l’écriture de modules HTTP qui se servent de ces informations pour le traitement. Pour plus d’informations, consultez l’article Méthode IHttpUrlInfo::IsFrequentlyHit.

  • Les attributs maxRequestEntityAllowed et uploadReadAheadSize configurent respectivement la limite du nombre maximal d’octets autorisés dans le corps d’une demande et la limite du nombre d’octets qu’un serveur web lit dans une mémoire tampon et passe à une extension ISAPI. Gardez à l’esprit que l’augmentation de ces valeurs permet à l’utilisateur final de charger davantage de contenu, ce qui peut impacter les ressources mémoire du runtime IIS. Il est recommandé de maintenir ces valeurs à un niveau adéquat par rapport aux besoins de l’application, et d’utiliser la valeur maximale uniquement dans des circonstances exceptionnelles.

Nouveautés dans IIS 7.5

Dans IIS 7.5, l’attribut authenticatedUserOverride a été ajouté à l’élément <serverRuntime>, ce qui permet de configurer si le runtime du serveur IIS 7 fournit l’identité de l’utilisateur authentifié ou l’identité du processus de travail dans les méthodes IHttpUser::GetPrimaryToken et IHttpUser::GetImpersonationToken. Cet attribut peut être défini sur UseAuthenticatedUser ou UseWorkerProcessUser. Ces valeurs spécifient respectivement si le runtime du serveur IIS 7 fournit l’identité de l’utilisateur authentifié ou l’identité du processus de travail pour chaque module utilisant l’emprunt d’identité.

Compatibilité

Version Notes
IIS 10.0 L’élément <serverRuntime> n’a fait l’objet d’aucune modification dans IIS 10.0.
IIS 8.5 L’élément <serverRuntime> n’a fait l’objet d’aucune modification dans IIS 8.5.
IIS 8.0 L’élément <serverRuntime> n’a fait l’objet d’aucune modification dans IIS 8.0.
IIS 7.5 L’attribut authenticatedUserOverride a été ajouté dans IIS 7.5.
IIS 7.0 L’élément <serverRuntime> a été introduit dans IIS 7.0.
IIS 6.0 L’élément <serverRuntime> remplace les propriétés de métabase IIS 6.0 suivantes :
  • SetHostName
  • MaxRequestEntityAllowed
  • UploadReadAheadSize

Programme d’installation

L’élément <serverRuntime> est inclus dans l’installation par défaut d’IIS 7.

Procédure

Il n’existe pas d’interface utilisateur vous permettant de configurer l’élément <serverRuntime> pour IIS 7. Pour obtenir des exemples sur la façon de configurer l’élément <serverRuntime> programmatiquement, consultez la section Exemples de code de ce document.

Configuration

Attributs

Attribut Description
alternateHostName Attribut de chaîne facultatif.

Spécifie le nom d’hôte à utiliser pour la redirection.
appConcurrentRequestLimit Attribut uint facultatif.

Spécifie le nombre maximal de demandes pouvant être mises en file d’attente pour une application.

La valeur par défaut est 5000.
authenticatedUserOverride Attribut enum facultatif.

Spécifie si le runtime du serveur IIS 7 fournit l’identité de l’utilisateur authentifié ou l’identité du processus de travail pour les modules qui utilisent l’emprunt d’identité.

Remarque : Cet attribut a été ajouté dans IIS 7.5.
Valeur Description
UseAuthenticatedUser Spécifie qu’IIS fournit le jeton de l’utilisateur authentifié ; les applications qui s’exécutent dans ce contexte sont limitées aux restrictions d’accès applicables à l’identité de l’utilisateur authentifié.

La valeur numérique est 1.
UseWorkerProcessUser Spécifie qu’IIS fournit le jeton de l’identité du processus de travail au lieu d’utiliser l’identité de l’utilisateur authentifié ; les applications qui s’exécutent dans ce contexte sont limitées aux restrictions d’accès applicables à l’identité du processus de travail.

La valeur numérique est 2.
La valeur par défaut est UseAuthenticatedUser.
enabled Attribut Boolean facultatif.

Spécifie si les applications sur le serveur web sont autorisées à fournir du contenu (true) ou si elles ne le sont pas (false).

La valeur par défaut est true.
enableNagling Attribut Boolean facultatif.

Spécifie si le nagling est activé (true) ou désactivé (false).

La valeur par défaut est false.
frequentHitThreshold Attribut uint facultatif.

Spécifie le nombre de fois où une URL doit être demandée, dans l’intervalle de temps spécifié dans l’attribut frequentHitTimePeriod, pour être considérée comme une URL fréquemment demandée. La valeur doit être comprise entre 1 et 2147483647.

La valeur par défaut est 2.
frequentHitTimePeriod Attribut timeSpan facultatif.

Spécifie l’intervalle de temps durant lequel une URL doit être demandée le nombre de fois spécifié dans l’attribut frequentHitThreshold pour être considérée comme une URL fréquemment demandée.

La valeur par défaut est 00:00:10 (10 secondes).
maxRequestEntityAllowed Attribut uint facultatif.

Spécifie le nombre maximal d’octets autorisés dans le corps d’une demande. Si l’en-tête Content-Length spécifie un plus grand nombre, IIS envoie l’erreur HTTP 403 en réponse.

La valeur par défaut est 4294967295 (illimité).
uploadReadAheadSize Attribut uint facultatif.

Spécifie le nombre d’octets qu’un serveur web lit dans une mémoire tampon et passe à un module ou une extension ISAPI. Cela se produit une fois pour chaque demande du client. Le module ou l’extension ISAPI reçoit toutes les données supplémentaires directement du client. La valeur doit être comprise entre 0 et 2147483647.

La valeur par défaut est 49152.

Éléments enfants

Aucune.

Exemple Configuration

L’exemple de configuration suivant définit l’attribut enable de l’élément <serverRuntime> sur true, puis il configure le nombre de demandes pour qu’une URL soit considérée comme « fréquemment demandée » en définissant l’attribut frequentHitThreshold sur 5 demandes et l’attribut frequentHitTimePeriod sur 20 secondes.

<location path="Default Web Site">
   <system.webServer>
      <serverRuntime enabled="true"
         frequentHitThreshold="5"
         frequentHitTimePeriod="00:00:20" />
   </system.webServer>
</location>

Exemple de code

Les exemples de code suivants définissent l’attribut enable de l’élément <serverRuntime> sur true, puis ils configurent le nombre de demandes pour qu’une URL soit considérée comme « fréquemment demandée » en définissant l’attribut frequentHitThreshold sur 5 demandes et l’attribut frequentHitTimePeriod sur 20 secondes.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/serverRuntime /enabled:"True" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/serverRuntime /frequentHitThreshold:"5" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/serverRuntime /frequentHitTimePeriod:"00:00:20" /commit:apphost

Remarque

Veillez à définir le paramètre commit sur apphost quand vous utilisez AppCmd.exe pour configurer ces paramètres. Cela valide les paramètres de configuration dans la section d’emplacement appropriée dans le fichier ApplicationHost.config.

C#

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

         ConfigurationSection serverRuntimeSection = config.GetSection("system.webServer/serverRuntime", "Default Web Site");
         serverRuntimeSection["enabled"] = true;
         serverRuntimeSection["frequentHitThreshold"] = 5;
         serverRuntimeSection["frequentHitTimePeriod"] = TimeSpan.Parse("00:00:20");

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration

      Dim serverRuntimeSection As ConfigurationSection = config.GetSection("system.webServer/serverRuntime", "Default Web Site")
      serverRuntimeSection("enabled") = True
      serverRuntimeSection("frequentHitThreshold") = 5
      serverRuntimeSection("frequentHitTimePeriod") = TimeSpan.Parse("00:00:20")

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

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

var serverRuntimeSection = adminManager.GetAdminSection("system.webServer/serverRuntime", "MACHINE/WEBROOT/APPHOST/Default Web Site");
serverRuntimeSection.Properties.Item("enabled").Value = true;
serverRuntimeSection.Properties.Item("frequentHitThreshold").Value = 5;
serverRuntimeSection.Properties.Item("frequentHitTimePeriod").Value = "00:00:20";

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set serverRuntimeSection = adminManager.GetAdminSection("system.webServer/serverRuntime", "MACHINE/WEBROOT/APPHOST/Default Web Site")
serverRuntimeSection.Properties.Item("enabled").Value = True
serverRuntimeSection.Properties.Item("frequentHitThreshold").Value = 5
serverRuntimeSection.Properties.Item("frequentHitTimePeriod").Value = "00:00:20"

adminManager.CommitChanges()