Konfigurationsvererbung

Wenn der Server eine Anforderung für eine bestimmte Webressource empfängt, berechnet ASP.NET die Konfigurationseinstellungen für die jeweilige Ressource in hierarchischer Weise. Dazu werden alle Konfigurationsdateien im virtuellen Verzeichnispfad des angeforderten URLs herangezogen. Angenommen, Sie verfügen über eine Website mit folgender Dateistruktur, in der das Anwendungsstammverzeichnis dem virtuellen Verzeichnis (Vdir) der Anwendung entspricht.

Normalerweise setzt die letzte Konfigurationseinstellung Einstellungen für denselben, in übergeordneten Verzeichnissen enthaltenen Abschnitt außer Kraft. Durch den Abschnittshandler könnte jedoch ein abweichendes Vererbungsschema implementiert werden.

Als Administrator könnten Sie die Anwendungseinstellungen beispielsweise folgendermaßen konfigurieren: Alle Benutzer haben Zugriff auf die ASP.NET-Ressourcen im Anwendungsstammverzeichnis (dem physischen Verzeichnis, das dem virtuellen Anwendungsverzeichnis entspricht), der Zugriff auf die ASP.NET-Ressourcen in den beiden Unterverzeichnissen ist jedoch bestimmten Benutzern vorbehalten.

Angenommen, im Verzeichnis SubDir1 ist eine Datei Web.config vorhanden, während im Anwendungsstammverzeichnis oder in SubDir2 keine solche Datei enthalten ist. In diesem Fall verwendet ASP.NET zwei Konfigurationsdateien. Die Datei der höchsten Ebene befindet sich im Verzeichnis systemroot\Microsoft .NET \Framework\Versionsnummer\CONFIG. Diese Datei namens Machine.config wurde auf Computerebene angelegt und vererbt ihre Einstellungen an alle ASP.NET-Verzeichnisse und -Unterverzeichnisse. Machine.config ist im Lieferumfang von .NET Framework enthalten und umfasst zahlreiche Standardeinstellungen für ASP.NET. Die Standardeinstellung für den auf die Sicherheit bezogenen Konfigurationsabschnitt dieser Datei sieht vor, dass alle Benutzer auf sämtliche URL-Ressourcen zugreifen können. Im Anwendungsstammverzeichnis des Beispiels ist keine Konfigurationsdatei enthalten, durch die Sicherheitseinstellungen geändert werden. Also können alle Benutzer auf die darin enthaltenen ASP.NET-Ressourcen zugreifen (da dieses Verzeichnis von der Konfigurationsdatei auf Computerebene erbt). Falls im Verzeichnis SubDir1 der Datei Web.config ein Konfigurationsabschnitt für Sicherheitseinstellungen enthalten ist, durch die der Zugriff bestimmten Benutzern vorbehalten ist, wird diese Einstellung an SubDir2 vererbt. Auf diese Weise können zwar alle Benutzer auf die ASP.NET-Ressourcen im Anwendungsstammverzeichnis zugreifen, der Zugriff auf ASP.NET-Ressourcen in den Verzeichnissen SubDir1 und SubDir2 ist jedoch nur bestimmten Benutzern möglich.

Da Konfigurationseinstellungen für virtuelle Verzeichnisse unabhängig von der physischen Verzeichnisstruktur sind, sollten virtuelle Verzeichnisse mit Sorgfalt organisiert werden, um Konfigurationsprobleme zu vermeiden. Angenommen, Sie verfügen über eine Anwendung mit dem Namen "MyResource.aspx", die die folgende physische Verzeichnisstruktur hat.

C:\Subdir1\Subdir2\MyResource.aspx

Wenn sich in Subdir1 eine Konfigurationsdatei befindet, ein virtuelles Verzeichnis namens Vdir1 dem Pfad c:\Subdir1 und ein anderes virtuelles Verzeichnis namens Vdir2 dem Pfad c:\Subdir1\Subdir2 zugeordnet ist, geschieht Folgendes. Wenn ein Client unter Verwendung des URLs https://localhost/vdir1/subdir2/MyResource.aspx auf die Ressource mit dem physischen Speicherort c:\Subdir1\Subdir2\MyResource.aspx zugreift, erbt die Ressource Konfigurationseinstellungen von Vdir1. Wenn der Client jedoch über den URL https://localhost/vdir2/MyResource.aspx auf dieselbe Ressource zugreift, werden keine Einstellungen von Vdir1 vererbt. Da die Erstellung von virtuellen Verzeichnissen auf diese Weise unerwartete Ergebnisse oder sogar Anwendungsfehler hervorrufen kann, wird von diesem Verfahren abgeraten.

Hinweis   Das ASP.NET-Konfigurationssystem wird nur auf ASP.NET-Ressourcen angewendet (die mit Hilfe von Aspnet_isapi.dll für die Behandlung durch ASP.NET registriert wurden). Autorisierungen für ASP.NET-fremde Ressourcen werden vom Konfigurationssystem standardmäßig nicht unterstützt. Auf ASP-, HTML-, TXT-, GIF- und JPEG-Dateien können beispielsweise alle Benutzer zugreifen. Falls im vorangehenden Beispiel das Durchsuchen von Verzeichnissen aktiviert und keine weiteren Beschränkungen konfiguriert wären, könnten ASP.NET-fremde Dateien im Anwendungsstammverzeichnis sowie in SubDir1 und SubDir2 von allen Benutzern angezeigt werden. Weitere Informationen über Sicherheit in ASP.NET finden Sie unter Sicherheit für ASP.NET-Webanwendungen.

Siehe auch

ASP.NET-Konfiguration | Konfigurieren von .NET Framework-Anwendungen