Partager via


Héritage de configuration

Lorsque le serveur reçoit une demande pour une ressource Web particulière, ASP.NET calcule de manière hiérarchique les paramètres de configuration pour cette ressource, en utilisant tous les fichiers de configuration qui se trouvent dans le chemin d'accès du répertoire virtuel pour l'URL demandée. Un site Web pourrait par exemple avoir la structure de fichiers suivante, où le répertoire racine de l'application est son répertoire virtuel (Vdir).

Le dernier paramètre de configuration remplace normalement les paramètres fournis dans les répertoires parents pour la même section, mais le gestionnaire de sections peut implémenter un schéma d'héritage différent.

En tant qu'administrateur, par exemple, vous pouvez configurer les paramètres de l'application afin de permettre à tous les utilisateurs d'accéder aux ressources ASP.NET dans le répertoire racine de l'application (répertoire physique mappé par le répertoire virtuel) mais de n'autoriser que les utilisateurs sélectionnés à accéder aux ressources ASP.NET dans les deux sous-répertoires.

Supposons qu'il y ait un fichier Web.config dans le répertoire SubDir1 et aucun dans la racine de l'application ou les sous-répertoires SubDir2. Dans ce cas, ASP.NET utilise deux fichiers de configuration. Le fichier de niveau le plus élevé est celui qui se trouve dans le répertoire systemroot\Microsoft .NET\Framework\Numéroversion\CONFIG. Ce fichier, nommé Machine.config, est au niveau de la machine et tous les répertoires et sous-répertoires ASP.NET héritent de ses paramètres. Machine.config est fourni avec le .NET Framework et contient de nombreux paramètres ASP.NET par défaut. Le paramètre par défaut pour la section de configuration de la sécurité de ce fichier permet aux utilisateurs d'accéder à toutes les ressources URL. Il n'y a pas de fichier de configuration dans le répertoire racine de l'application qui modifie la sécurité donné en exemple, tous les utilisateurs ont donc accès aux ressources ASP.NET qui s'y trouvent (car ce répertoire hérite du fichier de configuration du niveau machine). Si le fichier Web.config dans le répertoire SubDir1 contient une section de configuration de la sécurité qui n'autorise l'accès qu'à certains utilisateurs, SubDir2 hérite alors de ce paramètre. Tous les utilisateurs ont donc accès aux ressources ASP.NET du répertoire racine de l'application, mais seuls certains d'entre eux ont accès aux ressources ASP.NET de SubDir1 et SubDir2.

Les paramètres de configuration pour les répertoires virtuels sont indépendants de la structure du répertoire physique et les répertoires virtuels doivent être soigneusement organisés pour éviter tout problème de configuration. Vous pouvez par exemple avoir une application nommée MyResource.aspx avec la structure de répertoires physique suivante.

C:\Subdir1\Subdir2\MyResource.aspx

Supposons qu'un fichier de configuration se trouve dans Subdir1, qu'un répertoire virtuel nommé Vdir1 soit mappé à c:\Subdir1 et qu'un autre nommé Vdir2 soit mappé à c:\Subdir1\Subdir2. Si un client accède à la ressource qui se trouve physiquement à l'emplacement c:\Subdir1\Subdir2\MyResource.aspx à l'aide de l'URL https://localhost/vdir1/subdir2/MyResource.aspx, la ressource hérite des paramètres de configuration de Vdir1. Cependant, si le client accède à la même ressource à l'aide de l'URL https://localhost/vdir2/MyResource.aspx, il n'hérite pas des paramètres de Vdir1. Par conséquent, créer des répertoires virtuels de cette façon peut générer des résultats inattendus ou même la défaillance d'une application et n'est pas recommandé.

Remarque   Le système de configuration ASP.NET s'applique uniquement aux ressources ASP.NET (celles qui sont inscrites pour être gérées par ASP.NET à l'aide de Aspnet_isapi.dll). Le système de configuration ne fournit pas d'autorisation pour les ressources autres qu'ASP.NET par défaut. Les fichiers ASP, HTML, TXT, GIF et JPEG, par exemple, sont accessibles par tous les utilisateurs. Dans l'exemple précédent, si l'exploration des répertoires est activée et qu'aucune autre restriction n'est en place, tous les utilisateurs peuvent afficher les fichiers autres qu'ASP.NET qui se trouvent dans le répertoire racine de l'application SubDir1 et dans SubDir2. Pour plus d'informations sur la sécurité ASP.NET, consultez Sécurité des applications Web ASP.NET.

Voir aussi

Configuration ASP.NET | Configuration d'applications