Structure de configuration
Les fichiers de configuration ASP.NET sont appelés fichiers Web.config et peuvent apparaître dans plusieurs répertoires au sein d'une application ASP.NET. La hiérarchie de configuration ASP.NET présente les caractéristiques suivantes :
Utiliser un fichier de configuration qui s'applique aux ressources du répertoire dans lequel se trouve le fichier de configuration et à tous ses sous-répertoires.
Vous permet de placer les données de configuration dans un emplacement qui leur donnera la portée appropriée (l'ordinateur entier, toutes les applications Web, une seule application ou un sous-répertoire de cette application).
Permet de remplacer les paramètres de configuration hérités des niveaux supérieurs de la hiérarchie de configuration. Permet également de verrouiller les paramètres de configuration pour éviter qu'ils ne soient écrasés par des paramètres de configuration de niveau inférieur.
Organisez les groupes logiques de paramètres de configuration en sections.
Héritage de configuration
Toutes les applications .NET Framework héritent des paramètres de configuration de base et des valeurs par défaut d'un fichier nommé systemrootMicrosoft .NETFrameworkversionNumberCONFIGMachine.config. Le fichier Machine.config est utilisé pour les paramètres de configuration au niveau du serveur. Certains de ces paramètres ne peuvent pas être remplacés dans les fichiers de configuration situés plus bas dans la hiérarchie.
Les applications clientes .NET (console et applications Windows) utilisent un fichier de configuration nommé ApplicationName.config pour remplacer les paramètres hérités. Les applications ASP.NET utilisent un fichier de configuration nommé Web.config pour remplacer les paramètres hérités.
La racine de la hiérarchie de configuration ASP.NET est un fichier appelé fichier racine Web.config, qui se trouve dans le même répertoire que le fichier Machine.config. Le fichier racine Web.config hérite de tous les paramètres du fichier Machine.config. Le fichier racine Web.config contient des paramètres qui s'appliquent à toutes les applications ASP.NET exécutant une version spécifique du .NET Framework. Étant donné que chaque application ASP.NET hérite des paramètres de configuration par défaut du fichier racine Web.config, vous devez uniquement créer des fichiers Web.config pour les paramètres qui remplacent les paramètres par défaut.
Héritage dans les éléments de collection
Certains éléments de configuration sont des collections, par exemple l'élément namespaces et l'élément customErrors.
Dans une collection, les paramètres de configuration sont généralement ajoutés à la collection via l'élément enfant add, supprimés par nom de clé via l'élément enfant delete, ou la collection entière peut être effacée via l'élément enfant clear. À moins que les doublons ne soient autorisés, les paramètres ajoutés dans un profil enfant remplaceront les paramètres portant le même nom de clé dans le profil parent.
Notez
que certaines collections qui existaient dans les versions antérieures du .NET Framework utilisaient des noms d'éléments différents pour ajouter des éléments enfants. Par exemple, l'élément customErrors utilise l'élément enfant error pour ajouter des erreurs personnalisées à la collection.
Si une demande est reçue pour un fichier qui n'existe pas dans le répertoire SubDir1, ASP.NET commencera à rechercher dans la hiérarchie de configuration et démarrera à partir du fichier Web.config le plus local (s'il existe, il peut se trouver dans le répertoire actuel ou peut être dans le répertoire courant). ASP.NET recherchera dans l'élément d'erreur (schéma de paramètres ASP.NET) de customErrors un attribut statusCode égal à « 404 ». Une fois qu'ASP.NET détecte une erreur 404 dans les paramètres de configuration, l'URL dans l'attribut de redirection est renvoyée en réponse.
Portée des paramètres de configuration
Les paramètres de configuration ont différentes portées : certains ont une portée globale et d'autres ne sont valides que pour la portée de l'application (fichier racine Web.config ou fichier Machine.config).
La portée d'une section de configuration est définie pour toutes les sections contenues dans ASP.NET dans l'attributallowDefinition de l'élément de section configSections (schéma des paramètres généraux) dans le fichier Machine.config. Par exemple, l’élément d’authentification (Schéma de paramètres ASP.NET) possède l’attribut allowDefinition de l’élément MachineToApplication. Cela signifie que l'élément d'authentification peut être défini dans le fichier Machine.config au niveau de l'application, le fichier Web.config racine et le fichier Web.config. S'il est défini au niveau du sous-répertoire, une erreur sera générée. Si l'attribut AllowDefinition n'est pas défini pour une section, la valeur par défaut est Everywhere.
L'étendue des paramètres de configuration pour chaque élément dans les paramètres de configuration ASP.NET et les paramètres de configuration généraux (ASP.NET) est répertoriée en regard de Configurable dans le tableau Informations sur l'élément.
Le tableau suivant répertorie le niveau de chaque fichier dans la hiérarchie de configuration, le nom de chaque fichier et une description des caractéristiques héritées importantes de chaque fichier.
Niveau de configuration | Nom du fichier | Description du fichier |
Serveur | Machine.config | Le fichier Machine.config contient le schéma ASP.NET pour toutes les applications Web sur le serveur. Ce fichier se trouve au niveau supérieur de la hiérarchie de fusion de configuration. |
Le fichier Web.config du serveur Web Web racine.config | est | stocké dans le même répertoire que le fichier Machine.config et contient les valeurs par défaut pour la plupart de la section de configuration system.web. Au moment de l'exécution, ce fichier est fusionné à partir du deuxième niveau à partir du haut dans la hiérarchie de configuration. |
Site | Web.config | Le fichier Web.config d'un site spécifique contient des paramètres qui s'appliquent à ce site et sont hérités de toutes les applications et sous-répertoires ASP.NET de ce site. |
Racine de l'application ASP.NET | Web.config | Le fichier Web.config d'une application ASP.NET spécifique se trouve dans le répertoire racine de l'application. Il contient la configuration. |
Sous-répertoire d'application ASP.NET | Web.config | Le fichier Web.config d'un sous-répertoire d'application contient les paramètres qui s'appliquent à ce sous-répertoire et sont hérités vers le bas pour tous les sous-répertoires de ses branches. |
Répertoire des applications client | ApplicationName.config | Le fichier ApplicationName.config contient les paramètres des applications client Windows (et non des applications Web). |
Élément ProcessModel
L'élément processModel (schéma de paramètres ASP.NET) configure le modèle de traitement utilisé pour le serveur (y compris toutes les applications ASP.NET sur le serveur). Par conséquent, les paramètres processModel peuvent uniquement être placés dans le fichier Machine.config et ne peuvent pas être remplacés par les paramètres d’un fichier Web.config.
Les modifications apportées à l'élément processModel ne prendront effet qu'après le redémarrage du processus de travail, plutôt qu'immédiatement après la définition des modifications comme les autres éléments de configuration.
Remarque
Lorsque ASP.NET s'exécute dans Internet Information Services (IIS) 6.0 en mode d'isolation des processus de travail, le modèle de processus IIS 6.0 est utilisé et le paramètre de la section processModel du fichier Machine.config est ignoré. Pour configurer l'identité du processus, le round robin ou d'autres valeurs de modèle de processus, utilisez le Gestionnaire IIS pour configurer le processus de travail IIS de l'application.
Calcul d'exécution des paramètres de configuration
Lorsque le serveur reçoit une demande pour une ressource Web spécifique, ASP.NET calcule hiérarchiquement les paramètres de configuration pour cette ressource en utilisant tous les fichiers de configuration situés dans le chemin du répertoire virtuel de l'URL demandée. Les paramètres de configuration locaux remplacent les paramètres du fichier de configuration parent.
Ces paramètres sont calculés une fois, puis mis en cache pour les demandes ultérieures. ASP.NET surveille automatiquement les modifications apportées à un fichier et recalcule le cache lorsqu'un fichier de configuration dans la hiérarchie du fichier change. Lorsque le serveur reçoit une demande pour une URL spécifique, ASP.NET utilise la hiérarchie des paramètres de configuration dans le cache pour rechercher la ressource demandée.
À moins que l'attribut restartOnExternalChanges="false" soit inclus dans l'élément de section de configuration ou que les paramètres de configuration soient contenus dans un fichier distinct lié au fichier Web.config à l'aide de l'attribut configSource, l'application redémarrera lorsque la configuration sera modifiée.
Plusieurs ressources ASP.NET configurées dans un seul fichier
Le stockage des paramètres de plusieurs emplacements dans un seul fichier Web.config peut être utile lors de la gestion d'un grand nombre de paramètres de configuration ou de la gestion de sites Web clients dans un paramètre FAI. À l'aide de l'attribut path de l'élément location, vous pouvez configurer plusieurs ressources ASP.NET spécifiques stockées dans le sous-répertoire de l'application.
Pour plus d'informations sur l'utilisation de l'élément location, consultez Comment : configurer un répertoire spécifique à l'aide des paramètres d'emplacement.
Les paramètres des répertoires virtuels sont en conflit avec les paramètres des répertoires physiques.
Les paramètres de configuration des répertoires virtuels sont indépendants de la structure des répertoires physiques et les répertoires virtuels doivent être organisés avec soin pour éviter les problèmes de configuration. Par exemple, vous pouvez avoir un fichier ASP.NET nommé MyResource.aspx avec la structure de répertoires physiques suivante.
C:
Subdir1
Subdir2
MyResource.aspx
De plus, vous pouvez avoir un fichier de configuration situé dans Subdir1, un répertoire virtuel nommé Vdir1 mappé sur c:Subdir1 et un répertoire virtuel nommé Vdir1 mappé sur c:Subdir1Subdir2. répertoire de Vdir2. Si un client utilise l'URL http://localhost/vdir1/subdir2/MyResource.aspx pour accéder à une ressource physiquement située dans c:Subdir1Subdir2MyResource.aspx, la ressource hérite des paramètres de configuration de Vdir1. Toutefois, si un client accède à la même ressource à l'aide de l'URL http://localhost/vdir2/MyResource.aspx, la ressource n'hérite pas des paramètres de Vdir1. La création de répertoires virtuels de cette manière peut entraîner des résultats inattendus ou même provoquer l'échec de l'application. Il est recommandé de ne pas imbriquer de répertoires virtuels et, si nécessaire, d'utiliser un seul fichier Web.config.
Limitation de l'héritage ASP.NET
Vous souhaiterez peut-être limiter l'héritage des paramètres de configuration pour améliorer les performances des applications, maintenir une fiabilité élevée et simplifier l'administration. La fonctionnalité de restriction est contrôlée par les propriétés AllowOverride, lockAttributes, lockAllAttributesExcept, lockAllElementsExcept, lockItem et lockElements. Voir msdn pour plus d'informations sur ces propriétés.