Partager via


Informations de référence sur la configuration IIS 7 et IIS 8

par Tobin Titus

Présentation de ApplicationHost.config

Notes

Une référence de configuration détaillée pour IIS est disponible à l’adresse https://www.iis.net/configreference.

ApplicationHost.config est le fichier racine du système de configuration lorsque vous utilisez IIS 7 et versions ultérieures. Il inclut des définitions de tous les sites, applications, répertoires virtuels et pools d’applications, ainsi que des valeurs par défaut globales pour les paramètres de serveur web (similaires à machine.config et à la web.config racine pour les paramètres .NET Framework).

Il est également spécial dans le fait qu’il s’agit du seul fichier de configuration IIS disponible lorsque le serveur web est installé (toutefois, les utilisateurs peuvent toujours ajouter web.config fichiers s’ils le souhaitent). Il comprend une section spéciale (appelée configSections) pour l’inscription de toutes les sections IIS et WAS (Windows Activation System) (machine.config a le même concept pour les sections .NET Framework). Il a des définitions pour verrouiller la plupart des sections IIS au niveau global, de sorte que par défaut, elles ne peuvent pas être remplacées par des fichiers web.config de niveau inférieur dans la hiérarchie.

L’emplacement du fichier se trouve actuellement dans le répertoire system32\inetsrv, mais il est prévu de changer après bêta2 en system32\inetsrv\config. Ce document décrit toutes les sections dans l’ordre dans lequel elles apparaissent dans le fichier et les explique une par une. La section la plus complexe étant <system.webServer>, il est recommandé que le lecteur n’ignore pas cette section en particulier.

Guide pratique pour lire le schéma de configuration

Comme indiqué précédemment, ce document contient des extraits d’informations de schéma pour chaque section, afin que le lecteur puisse découvrir quelles propriétés sont disponibles et quelles sont leurs valeurs par défaut et leurs plages valides. Les extraits de code sont extraits directement du fichier de schéma de configuration pour les paramètres IIS : %windir%\system32\inetsrv\config\schema\IIS\_Schema.xml. Cette section explique comment lire les informations de schéma.

Le schéma de chaque section de configuration est défini dans un élément XML. Il n’existe aucune définition de schéma pour les groupes de sections. Le format suivant est utilisé ici pour expliquer comment lire le schéma :

<attribute-name>="<default-value>" [<metadata>] [<description>]

<attribute-name> est le nom de l’attribut de configuration, tel qu’il apparaît dans XML. Chaque attribut doit avoir un nom.

<default-value> est la valeur utilisée par défaut, si aucune autre valeur n’est spécifiée dans le xml pour l’attribut . Tous les attributs n’ont pas de valeurs par défaut (par exemple, nom du site). Dans ce cas, la syntaxe sera « ».

<metadata> contient plusieurs éléments :

  • Type d’exécution de l’attribut. Il s’agit de « bool », « enum », « flags », « int », « int64 », « String », « timeSpan ». Chaque attribut doit avoir un type.
  • « bool » est « true » ou « false ».
  • « enum » est un ensemble de valeurs possibles, où une seule d’entre elles peut être définie pour l’attribut . Chaque valeur de ce type a une valeur numérique et un nom convivial. La syntaxe utilise le caractère « | » comme délimiteur entre les noms conviviaux : value1|value2|...|valueN.
  • « flags » est similaire à « enum », sauf que les combinaisons de valeurs sont autorisées. Par conséquent, les valeurs numériques doivent être en multiples de 2, afin qu’elles puissent être ORed ensemble pour former des combinaisons. La syntaxe est identique à « enum » : value1|value2|...|valueN.
  • « int » est un entier 32 bits.
  • « int64 » est un entier 64 bits.
  • « Chaîne » est une chaîne de caractères.
  • « timeSpan » est une représentation d’une unité de temps, similaire au type de code managé TimeSpan. Il peut être conservé sous la forme d’un nombre (représentant des secondes ou des minutes) ; ou sous la forme d’une chaîne mise en forme au format « [dd :]hh :mm :ss ». L’élément « [dd :] » représente un nombre de jours facultatif. Les autres éléments représentent des nombres d’heures, de minutes et de secondes, respectivement. L’attribut « timeSpanFormat » spécifie le format à utiliser : nombre de secondes, nombre de minutes ou chaîne mise en forme.
  • Les attributs obligatoires sont marqués « Obligatoire ». Cela signifie qu’une valeur doit être définie dans le code XML. Par exemple, nom du site est un attribut obligatoire (chaque site doit avoir un nom dans IIS).

<description> est une brève description de l’attribut.

Schéma de section

L’élément <XML sectionSchema> est l’unité de base des informations de schéma. Toutes les autres informations de schéma y sont spécifiées. Il contient un attribut directement (« name »), puis le reste du schéma se trouve dans les sous-éléments qu’il contient.

Schéma d’attribut

Chaque attribut est défini dans un élément XML correspondant <attribute> dans le schéma. L’élément <attribute> peut se trouver directement dans l’élément <sectionSchema> (si l’attribut se trouve dans l’étendue de section) ou dans l’élément (si l’attribut se trouve dans un sous-élément de la section) ou dans l’élément <collection> (si l’attribut se trouve dans une collection au sein de la section).

Un schéma d’attribut doit spécifier un nom et un type d’exécution pour l’attribut. Il peut marquer l’attribut comme requis. Il peut marquer l’attribut en tant que clé unique (si elle se trouve à l’intérieur d’une collection) ou en tant que partie intégrante d’une clé de collection (avec d’autres attributs). Il peut spécifier une valeur par défaut pour l’attribut. Il peut marquer l’attribut pour le chiffrement automatique sur disque. Il peut spécifier si le mot « Infinite » est autorisé en tant que valeur pour l’attribut (uniquement pour les types numériques tels que int et in64, et pour timeSpan). Il peut spécifier le format d’intervalle de temps (secondes, minutes ou chaîne mise en forme) pour les attributs d’intervalle de temps. Il peut spécifier des règles de validation pour les attributs (voir la section Validation des attributs ci-dessous dans ce document).

<ATTRIBUTE			
    name=""  [String, Required] [XML name of the attribute]    type=""  [bool|enum|flags|int|int64|string|timeSpan, Required][Runtime type]
    required="false"  [bool] [Indicates if must be set]
    isUniqueKey="false"    [bool] [Serves as the collection key]
    isCombinedKey="false"  [bool] [Part of a multi-attribute key]
    defaultValue=""  [String] [Default value or comma-delimited flags]
    encrypted="false"  [bool] [Indicates if value persisted is encrypted]  
    allowInfinite="false"  [bool] [Indicates if "Infinite" can be set]
    timeSpanFormat="string" [string|seconds|minutes] [hh:mm:ss or number]
    validationType=""       [See validation below]
    validationParameter=""  [See validation below]			

/>

Schéma d’élément

Chaque élément est défini dans un élément XML correspondant <element> dans le schéma. Les éléments peuvent être imbriqués. Un élément est simplement un conteneur pour d’autres attributs ou sous-éléments. Il doit avoir un nom et il peut servir de conteneur de valeurs par défaut pour les éléments de collection (par exemple, siteDefaults contient les valeurs par défaut pour les sites de la <sites> collection).

<ELEMENT>
    name=""  [String, Required] [XML name of the element]
    isCollectionDefault="false"  [bool] [Indicates if default values are held for other elements in this collection] 
/>

Schéma de collection

Chaque collection est définie dans un élément XML de collection> correspondant <dans le schéma. Les collections contiennent plusieurs éléments, qui peuvent être ajoutés et supprimés individuellement. En règle générale, les noms des directives de collection sont « add », « remove » et « clear », mais certaines collections utilisent des noms différents pour plus de clarté (par exemple, la collection utilise « site » au lieu de « add »). Pour ce faire, spécifiez des valeurs pour addElement, removeElement et clearElement dans le schéma de collection. Si une directive de collection est manquante dans le schéma, la collection ne la prend pas en charge. Le schéma de collection peut spécifier le nom d’un élément par défaut, qui sera utilisé comme conteneur de valeurs par défaut pour les éléments de collection (cela complète isCollectionDefault dans le schéma d’élément).

Par exemple, la collection utilise siteDefaults comme élément par défaut. La plupart des collections ajoutent des éléments au fur et à mesure qu’elles fusionnent les fichiers de configuration de l’espace de noms, mais certaines peuvent spécifier mergeAppend="false » dans le schéma pour avoir un comportement prédéfinis. Par exemple, considérez deux niveaux de configuration : applicationHost.config et web.config dans un site.

<myCollection>

    <add value="1"/>

</myCollection>

Dans web.config :

<myCollection>

    <add value="2"/>

</myCollection>

Si la collection ajoute, sa configuration fusionnée (effective) au niveau du site sera :

<myCollection>

    <add value="1"/>

    <add value="2"/>

</myCollection>

Toutefois, s’il est ajouté, il sera :

<myCollection>

    <add value="2"/>

    <add value="1"/>

</myCollection>

Certaines collections peuvent autoriser des entrées en double en spécifiant allowDuplicates="true » dans leur schéma. Cette opération est principalement effectuée pour prendre en charge les collections héritées dans le .NET Framework (dans machine.config).

Certaines collections peuvent autoriser des attributs supplémentaires, au-delà de ceux spécifiés dans le schéma. Pour ce faire, spécifiez allowUnrecognizedAttributes="true » dans leur schéma. Elle est principalement effectuée pour prendre en charge les collections basées sur un fournisseur dans le .NET Framework.

<COLLECTION

    addElement=""     [String] [Name of Add directive, if supported]
    removeElement=""  [String] [Name of Remove directive, if supported]
    clearElement=""   [String] [Name of Clear directive, if supported]
    defaultElement="" [applicationDefaults|applicationPoolDefaults|siteDefaults|virtualDirectoryDefaults] [See isCollectionDefault]
    mergeAppend="true"  [bool] [Indicates whether or not deepest set values are appended]
    allowDuplicates="false"  [bool] [Indicates if multiple elements may have the same key]
    allowUnrecognizedAttributes="false"  [bool] [Indicates if non-schema attributes are ok]  

/>

Schéma d’énumération

Chaque attribut de type « enum » doit définir ses valeurs d’énumération un élément XML d’énumération> correspondant <dans le schéma. Chaque valeur doit avoir un nom convivial et une valeur numérique.

<ENUM

    name=""  [String, Required] [Friendly name of the enumerator] 
    value="" [int, Required] [Numeric value]

/>

Schéma des indicateurs

Chaque attribut de type « flags » doit définir ses valeurs d’indicateur dans un élément XML correspondant dans le schéma. Chaque indicateur doit avoir un nom convivial et une valeur numérique qui peut être ORed avec d’autres valeurs, pour former des combinaisons ; par conséquent, il doit être en multiples de 2.

<flags  [Can be used together to form combinations, unlike enums] 

    name=""  [String, Required] [Friendly name of the flag]
    value="" [int in powers of 2, Required] [Numeric value]  

/>

Validation d’attribut

La validation d’attribut est effectuée lors de l’analyse du code XML pour obtenir une section du fichier et lors de l’appel de l’API de configuration pour définir des valeurs. Si la validation échoue, l’opération souhaitée échoue (obtention de la section ou définition de la valeur non valide).

Chaque attribut peut associer un validateur pour sa valeur. Pour ce faire, spécifiez le nom du validateur approprié dans validationType et des paramètres supplémentaires dans validationParameter, dans le schéma d’attribut.

Le système prend en charge ces validateurs :

Validateur ApplicationPoolName

  • Ce validateur échoue sur les caractères suivants : |<>&\ / [] += ;:?* @ »
  • validationType="applicationPoolName »
    validationParameter=" »

Validateur IntegerRange

  • Ce validateur échoue si la valeur se trouve en dehors de la plage [à l’intérieur], en entiers.
  • validationType="integerRange »
    validationParameter="<minimum,maximum>><[,exclude] »

Validateur NonEmptyString

  • Ce validateur échoue si la valeur de chaîne n’est pas définie.
  • validationType="nonEmptyString »
    validationParameter=" »

Validateur SiteName

  • Ce validateur échoue sur ces caractères : /. ?
  • validationType="siteName »
    validationParameter=" »

Validateur TimeSpanRange

  • Ce validateur échoue si la valeur se trouve en dehors de la plage [à l’intérieur], en secondes.
  • validationType="timeSpanRange »
    validationParameter="<minimum,maximum,granularité>>><<[,exclude] »

Validateur TrimWhiteSpace

  • Ce validateur échoue si l’espace blanc est défini au début ou à la fin de la valeur.
  • validationType="requireTrimmedString »
    validationParameter=" »

<configSections> Section

Il s’agit de la toute première section du fichier. Il contient la liste de toutes les autres sections du fichier. Il s’agit du point d’inscription pour les sections (par exemple, pour annuler l’inscription d’une section du système, supprimez sa ligne de cette section , inutile de supprimer son fichier de schéma du répertoire config\schema).

Notez que d’autres fichiers de configuration peuvent également avoir une section tout en haut du fichier. Cela peut être utile pour inscrire des sections à des niveaux inférieurs au niveau global. Ces sections seront inscrites pour cette étendue de l’espace de noms uniquement. Web.config fichiers ne peuvent ajouter que des sections au système ; ils ne peuvent pas redéfinir les sections qui ont été inscrites dans les niveaux parents et ils ne peuvent pas supprimer (annuler l’inscription) des sections.

Les sections sont structurées par leur hiérarchie de groupes de sections contenant. Chaque inscription de section spécifie le nom de la section ; le type de code managé du gestionnaire de sections (cela n’a aucune signification dans ce fichier et sera supprimé après la version bêta2 ; il est utilisé uniquement par System.Configuration, de sorte qu’il existe toujours dans les fichiers machine.config et web.config) ; le niveau allowDefinition, si diffère de la valeur par défaut ; et le overrideModeDefault (cet attribut est utilisé pour verrouiller la plupart des sections IIS de ce fichier).

Notes

Section est l’unité de base du déploiement, de l’inscription, du verrouillage, de la recherche et du confinement des paramètres de configuration. Chaque section appartient à un groupe de sections (« parent immédiat »). Le groupe de sections est un conteneur de sections liées logiquement et est utilisé uniquement à des fins de hiérarchie structurée. Aucune opération ne peut être effectuée sur les groupes de sections. Les groupes de sections ne peuvent pas avoir de paramètres de configuration directement (les paramètres appartiennent à des sections). Les groupes de sections peuvent être imbriqués ; les sections ne peuvent pas.

schéma

<SECTION 
    name=""  [Required, Collection Key] [XML name of the section]
    allowDefinition="Everywhere" [MachineOnly|MachineToApplication|Everywhere] [Level where it can be set]
    overrideModeDefault="Allow"  [Allow|Deny] [Default delegation mode]

/>

Verrouillage

La plupart des sections IIS sont verrouillées par défaut, à l’aide de overrideModeDefault="Deny » dans la section. La méthode recommandée pour déverrouiller des sections consiste à utiliser des balises, comme suit :

<location path="Default Web Site" overrideMode="Allow"> 
    <system.webServer> 
        <asp /> 
    </system.webServer> 
</location>

La balise d’emplacement ci-dessus déverrouille la section pour le site web par défaut uniquement. Pour le déverrouiller pour tous les sites, spécifiez ceci dans applicationHost.config :

<location path="." overrideMode="Allow"> 
    <system.webServer> 
        <asp /> 
    </system.webServer> 
</location>

Notes

path= ». » et path=" » ont le même effet. Ils font référence au niveau actuel dans la hiérarchie.

Résumé

Nous espérons que cela vous familiarisera avec la nouvelle structure puissante de la nouvelle applicationhost.config. Pour explorer les différents éléments, vous devez passer en revue le schéma IIS situé dans %windir%\system32\inetsrv\config\schema\iis\_schema.xml.