ASP.NET-Konfigurationsszenarios

Aktualisiert: November 2007

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 URL herangezogen. Die lokaleren Konfigurationseinstellungen überschreiben dabei die Einstellungen in übergeordneten Konfigurationsdateien.

Konfigurationsszenario 1

Angenommen, Sie verfügen über eine Website mit folgender physischer Dateistruktur, in der das Verzeichnis Application Root dem virtuellen Verzeichnis der Anwendung entspricht.

Normalerweise überschreibt die letzte Konfigurationseinstellung die in übergeordneten Verzeichnissen enthaltenen Einstellungen für denselben Abschnitt. Bei einem Auflistungselement werden die Einstellungen nicht überschrieben, sondern der Auflistung hinzugefügt.

Hinweis:

Ein benutzerdefinierter Abschnittshandler implementiert u. U. ein anderes Vererbungsschema.

Angenommen, im Verzeichnis SubDir1 ist eine Datei Web.config vorhanden, und im Verzeichnis Application Root oder im Verzeichnis SubDir2 ist keine solche Datei enthalten. In diesem Fall verwendet ASP.NET drei Konfigurationsdateien, um die Konfigurationseinstellungen für das Verzeichnis SubDir1 zu ermitteln. Die Datei der höchsten Ebene befindet sich im Verzeichnis %systemroot%\Microsoft .NET \Framework\Versionsnummer\CONFIG. Diese Datei, die Machine.config genannt wird, gilt für die Computerebene. Alle .NET Framework-Anwendungen, die die angegebene Version von .NET Framework (Versionsnummer) ausführen, erben Einstellungen von dieser Datei. Die Datei der zweithöchsten Ebene ist die Stammdatei Web.config, die sich am selben Speicherort befindet. Alle ASP.NET-Anwendungen, die die festgelegte Version von .NET Framework ausführen, erben seine Einstellungen. Die dritte Konfigurationsdatei ist die Datei Web.config, die sich im Verzeichnis SubDir1 befindet.

Nehmen wir an, die Datei Web.config im Verzeichnis SubDir1 enthält das anonymousIdentification-Element, bei dem das enabled-Attribut auf true festgelegt ist. Die Standardeinstellung für das enabled-Attribut ist false. Dies ist ein interner Standardwert, der in keiner der Stammkonfigurationsdateien festgelegt ist. Da im Verzeichnis Application Root und im Verzeichnis SubDir2 keine Konfigurationsdatei zum Ändern des anonymousIdentification-Elements enthalten ist, haben anonyme Benutzer keinen Zugriff auf die ASP.NET-Ressourcen in diesen Verzeichnissen. Allerdings haben anonyme Benutzer Zugriff auf die ASP.NET-Ressourcen im Verzeichnis SubDir1.

Sicherheitshinweis:

Das ASP.NET-Konfigurationssystem betrifft nur ASP.NET-Ressourcen, d. h. die Ressourcen, die mithilfe von Aspnet_isapi.dll für die Behandlung durch ASP.NET registriert wurden. Standardmäßig stellt das Konfigurationssystem keine Autorisierung für ASP.NET-fremde Ressourcen bereit. Auf ASP-, HTML-, TXT-, GIF- und JPEG-Dateien können beispielsweise alle Benutzer zugreifen. Falls im vorangehenden Beispiel das Durchsuchen von Verzeichnissen aktiviert ist und keine weiteren Beschränkungen konfiguriert sind, können ASP.NET-fremde Dateien im Anwendungsstammverzeichnis sowie in SubDir1 und SubDir2 von allen Benutzern angezeigt werden. Weitere Informationen über die Sicherheit in ASP.NET finden Sie unter Sicherheit für ASP.NET-Webanwendungen.

Konfigurationsszenario 2

Die folgende Website verfügt über eine Dateistruktur, in der das virtuelle Verzeichnis der Anwendung dem Anwendungsstammverzeichnis (MyAppRootDir) zugeordnet ist.

MyAppRootDir
    SubDir1
        SubDir1A
    SubDir2

Abgesehen von den Bedingungen, die im Abschnitt "Beschränkungen der ASP.NET-Vererbung" unter ASP.NET-Konfigurationsdateihierarchie und Vererbung beschrieben sind, überschreibt die Konfigurationseinstellung in einem Verzeichnis die Einstellungen in übergeordneten Verzeichnissen. Beispielsweise können die Anwendungseinstellungen so konfiguriert werden, dass allen Benutzern Zugriff auf die ASP.NET-Ressourcen in MyAppRootDir und SubDir2 gewährt wird, aber nur ausgewählte Benutzer über Zugriff auf die ASP.NET-Ressourcen in SubDir1 und SubDir1A verfügen. Dies wird durch Ausführen folgender Schritte erreicht:

  1. Lassen Sie MyAppRootDir unverändert. Die ASP.NET-Ressourcen in MyAppRootDir erben die Standardeinstellungen von der Datei Machine.config. Eine dieser Einstellungen ermöglicht den anonymen Zugriff. In dieser Phase erben MyAppRootDir und die drei Unterverzeichnisse diese Authentifizierungseinstellung.

  2. Platzieren Sie in SubDir1 eine Datei Web.config, bei der die Authentifizierung so festgelegt ist, dass nur ausgewählte Benutzer Zugriff auf SubDir1 haben. Dadurch wird der anonyme Zugriff, der durch die Einstellung in der Datei Machine.config ermöglicht wird, überschrieben. Diese Einstellung wird auch an SubDir1A vererbt. SubDir2, das sich auf derselben Ebene wie SubDir1 befindet, erbt die Authentifizierungseinstellung in SubDir1 nicht.

Alle ASP.NET-Anwendungen erben die Standardeinstellungen in der Datei Web.config auf der Stammwebebene. 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 in der Datei Web.config im Verzeichnis SubDir1 ein Konfigurationsabschnitt für Sicherheitseinstellungen enthalten ist, der den Zugriff auf bestimmte Benutzer einschränkt, wird diese Einstellung an SubDir1A vererbt. Auf diese Weise können zwar alle Benutzer auf die ASP.NET-Ressourcen im Anwendungsstammverzeichnis und in SubDir2 zugreifen, der Zugriff auf ASP.NET-Ressourcen in SubDir1 und SubDir1A wird jedoch nur bestimmten Benutzern gewährt.

Konfigurationsszenario 3

Virtuelle Verzeichnisse sind angezeigte Namen für Verzeichnisse, mit deren Hilfe Zugriffspfade vereinfacht und die Namen echter Verzeichnisse verborgen werden. Ihre Konfigurationseinstellungen sind unabhängig von der physischen Verzeichnisstruktur. Daher müssen virtuelle Verzeichnisse sorgfältig organisiert werden, um Konfigurationsprobleme zu vermeiden. Sie können zum Beispiel virtuelle Verzeichnisse so einrichten, dass die ASP.NET-Seite mit dem Namen MyResource.aspx aus der folgenden physischen Verzeichnisstruktur abgerufen wird.

MyDir
    SubDir1 (mapped from VDir1)
        SubDir1A (mapped from VDir1A)
            MyResource.aspx
    SubDir2

In diesem Beispiel befindet sich eine Datei Web.config in SubDir1 und eine andere Datei Web.config in SubDir1A. Wenn ein Client mithilfe des URL https://localhost/vdir1/subdir1A/MyResource.aspx auf C:\Subdir1\Subdir1A\MyResource.aspx zugreift, erbt die Ressource Konfigurationseinstellungen von Vdir1. Wenn der Client jedoch über den URL https://localhost/vdir1A/MyResource.aspx auf dieselbe Ressource zugreift, erbt die Ressource die Einstellungen von Vdir1 nicht. Daher wird das Erstellen virtueller Verzeichnisse auf diese Weise nicht empfohlen, da dies zu unerwarteten Ergebnissen oder sogar zu einem Anwendungsfehler führen kann.

Als Webserver für alle über das Web veröffentlichten Ressourcen dient Internetinformationsdienste (IIS). Das ASP.NET-Konfigurationssystem gilt nur für ASP.NET-Ressourcen. Diese Ressourcen sind für die Behandlung durch ASP.NET mithilfe von Aspnet_isapi.dll registriert. Standardmäßig stellt das Konfigurationssystem keine Sicherheit für ASP.NET-fremde Ressourcen bereit. Auf ASP-, HTML-, TXT-, GIF- und JPEG-Dateien können beispielsweise alle Benutzer zugreifen. Falls im vorangehenden Beispiel das Durchsuchen von Verzeichnissen aktiviert ist und keine weiteren Beschränkungen konfiguriert sind, können ASP.NET-fremde Dateien im Anwendungsstammverzeichnis sowie in SubDir1 und SubDir2 von allen Benutzern angezeigt werden.

Siehe auch

Weitere Ressourcen

Verwalten von ASP.NET-Websites

Konfigurieren von .NET Framework-Anwendungen