Konfigurationsstruktur
ASP.NET-Konfigurationsdateien werden Web.config-Dateien genannt und können in mehreren Verzeichnissen innerhalb einer ASP.NET-Anwendung angezeigt werden. Die ASP.NET-Konfigurationshierarchie weist die folgenden Merkmale auf:
Verwenden Sie eine Konfigurationsdatei, die für Ressourcen in dem Verzeichnis gilt, in dem sich die Konfigurationsdatei befindet, und allen seinen Unterverzeichnissen.
Ermöglicht Ihnen, Konfigurationsdaten an einem Ort zu platzieren, der ihnen den entsprechenden Umfang verleiht (der gesamte Computer, alle Webanwendungen, eine einzelne Anwendung oder ein Unterverzeichnis innerhalb dieser Anwendung).
Ermöglicht das Überschreiben von Konfigurationseinstellungen, die von höheren Ebenen in der Konfigurationshierarchie übernommen wurden. Ermöglicht außerdem das Sperren von Konfigurationseinstellungen, um zu verhindern, dass sie durch Konfigurationseinstellungen auf niedrigerer Ebene überschrieben werden.
Organisieren Sie logische Gruppen von Konfigurationseinstellungen in Abschnitten.
Konfigurationsvererbung
Alle .NET Framework-Anwendungen erben grundlegende Konfigurationseinstellungen und Standardeinstellungen aus einer Datei mit dem Namen systemrootMicrosoft .NETFrameworkversionNumberCONFIGMachine.config. Die Datei Machine.config wird für Konfigurationseinstellungen auf Serverebene verwendet. Einige dieser Einstellungen können in Konfigurationsdateien, die sich weiter unten in der Hierarchie befinden, nicht überschrieben werden.
.NET-Clientanwendungen (Konsolen- und Windows-Anwendungen) verwenden eine Konfigurationsdatei namens ApplicationName.config, um geerbte Einstellungen zu überschreiben. ASP.NET-Anwendungen verwenden eine Konfigurationsdatei namens Web.config, um geerbte Einstellungen zu überschreiben.
Der Stamm der ASP.NET-Konfigurationshierarchie ist eine Datei namens Root-Web.config-Datei, die sich im selben Verzeichnis wie die Machine.config-Datei befindet. Die Stammdatei Web.config erbt alle Einstellungen von der Datei Machine.config. Die Stammdatei Web.config enthält Einstellungen, die für alle ASP.NET-Anwendungen gelten, auf denen eine bestimmte Version von .NET Framework ausgeführt wird. Da jede ASP.NET-Anwendung Standardkonfigurationseinstellungen von der Stammdatei Web.config erbt, müssen Sie Web.config-Dateien nur für Einstellungen erstellen, die die Standardeinstellungen überschreiben.
Vererbung in Sammlungselementen
Einige Konfigurationselemente sind Sammlungen, beispielsweise das Namespaces-Element und das CustomErrors-Element.
In einer Sammlung werden Konfigurationseinstellungen normalerweise über das Element „Untergeordnetes Element hinzufügen“ zur Sammlung hinzugefügt, über das Element „Untergeordnetes Element entfernen“ nach Schlüsselnamen entfernt, oder die gesamte Sammlung kann über das Element „Untergeordnetes Element löschen“ gelöscht werden. Sofern Duplikate nicht zulässig sind, überschreiben Einstellungen, die in einem untergeordneten Profil hinzugefügt wurden, Einstellungen mit demselben Schlüsselnamen im übergeordneten Profil.
Beachten Sie
, dass einige Sammlungen, die in früheren Versionen von .NET Framework vorhanden waren, unterschiedliche Elementnamen zum Hinzufügen untergeordneter Elemente verwendeten. Beispielsweise verwendet das Element „customErrors“ das untergeordnete Element „error“, um benutzerdefinierte Fehler zur Sammlung hinzuzufügen.
Wenn eine Anfrage für eine Datei empfangen wird, die nicht im Verzeichnis „SubDir1“ vorhanden ist, beginnt ASP.NET mit der Suche in der Konfigurationshierarchie und beginnt mit der lokalsten Web.config-Datei (falls vorhanden, befindet sie sich möglicherweise im aktuellen Verzeichnis oder dort). kann sich im aktuellen Verzeichnis befinden). ASP.NET durchsucht das Fehlerelement (ASP.NET-Einstellungsschema) von „customErrors“ nach einem statusCode-Attribut gleich „404“. Sobald ASP.NET in den Konfigurationseinstellungen einen 404-Fehler findet, wird die URL im Redirect-Attribut als Antwort zurückgegeben.
Umfang der Konfigurationseinstellungen
Konfigurationseinstellungen haben unterschiedliche Geltungsbereiche – einige haben einen globalen Geltungsbereich und andere sind nur für den Anwendungsbereich gültig (Stammdatei Web.config oder Machine.config-Datei).
Der Umfang eines Konfigurationsabschnitts wird für alle in ASP.NET enthaltenen Abschnitte im Attribut „allowDefinition“ des Abschnittselements „configSections“ (Schema für allgemeine Einstellungen) in der Datei „Machine.config“ definiert. Beispielsweise verfügt das Authentifizierungselement (ASP.NET Settings Schema) über das AllowDefinition-Attribut des MachineToApplication-Elements. Dies bedeutet, dass das Authentifizierungselement in der Machine.config-Datei auf Anwendungsebene, der Web.config-Stammdatei und der Web.config-Datei festgelegt werden kann. Wenn es auf Unterverzeichnisebene festgelegt ist, wird ein Fehler ausgegeben. Wenn das Attribut „allowDefinition“ für einen Abschnitt nicht definiert ist, ist der Standardwert „Everywhere“.
Der Umfang der Konfigurationseinstellungen für jedes Element in den ASP.NET-Konfigurationseinstellungen und allgemeinen Konfigurationseinstellungen (ASP.NET) ist neben „Konfigurierbar“ in der Tabelle „Elementinformationen“ aufgeführt.
In der folgenden Tabelle sind die Ebenen jeder Datei in der Konfigurationshierarchie, der Name jeder Datei und eine Beschreibung der wichtigen geerbten Merkmale jeder Datei aufgeführt.
Dateiname | der Konfigurationsebene | Dateibeschreibung |
Server | Machine.config | Die Datei Machine.config enthält das ASP.NET-Schema für alle Webanwendungen auf dem Server. Diese Datei befindet sich auf der obersten Ebene der Konfigurationszusammenführungshierarchie. |
Die Web.config-Datei des Root-Web- | Web.config- | Servers wird im selben Verzeichnis wie die Machine.config-Datei gespeichert und enthält Standardwerte für den größten Teil des system.web-Konfigurationsabschnitts. Zur Laufzeit wird diese Datei von der zweiten Ebene von oben in der Konfigurationshierarchie zusammengeführt. |
Site | Web.config | Die Web.config-Datei für eine bestimmte Site enthält Einstellungen, die für diese Site gelten und an alle ASP.NET-Anwendungen und Unterverzeichnisse dieser Site weitergegeben werden. |
ASP.NET-Anwendungsstammverzeichnis | Web.config | Die Web.config-Datei für eine bestimmte ASP.NET-Anwendung befindet sich im Stammverzeichnis der Anwendung. Sie enthält die Einrichtung. |
ASP.NET-Anwendungsunterverzeichnis | Web.config | Die Web.config-Datei für ein Anwendungsunterverzeichnis enthält Einstellungen, die für dieses Unterverzeichnis gelten und nach unten an alle Unterverzeichnisse in seinen Zweigen vererbt werden. |
Clientanwendungsverzeichnis | ApplicationName.config Die Datei ApplicationName.config | enthält Einstellungen für Windows-Clientanwendungen (keine Webanwendungen). |
ProcessModel-Element
Das ProcessModel-Element (ASP.NET-Einstellungsschema) konfiguriert das für den Server verwendete Verarbeitungsmodell (einschließlich aller ASP.NET-Anwendungen auf dem Server). Daher können ProcessModel-Einstellungen nur in der Datei Machine.config platziert werden und können nicht durch Einstellungen in einer Web.config-Datei überschrieben werden.
Änderungen am Element „processModel“ werden erst wirksam, nachdem der Arbeitsprozess neu gestartet wurde, und nicht sofort nach dem Festlegen von Änderungen wie bei anderen Konfigurationselementen.
Hinweis
Wenn ASP.NET in Internet Information Services (IIS) 6.0 im Arbeitsprozess-Isolationsmodus ausgeführt wird, wird das IIS 6.0-Prozessmodell verwendet und die Einstellung im Abschnitt „processModel“ der Datei „Machine.config“ ignoriert. Um Prozessidentität, Round-Robin oder andere Prozessmodellwerte zu konfigurieren, verwenden Sie IIS Manager, um den IIS-Arbeitsprozess der Anwendung zu konfigurieren.
Laufzeitberechnung der Konfigurationseinstellungen
Wenn der Server eine Anfrage für eine bestimmte Webressource empfängt, berechnet ASP.NET hierarchisch die Konfigurationseinstellungen für diese Ressource unter Verwendung aller Konfigurationsdateien, die sich im virtuellen Verzeichnispfad der angeforderten URL befinden. Lokale Konfigurationseinstellungen überschreiben Einstellungen in der übergeordneten Konfigurationsdatei.
Diese Einstellungen werden einmal berechnet und dann für nachfolgende Anfragen zwischengespeichert. ASP.NET überwacht automatisch Änderungen an einer Datei und berechnet den Cache neu, wenn sich eine Konfigurationsdatei innerhalb der Dateihierarchie ändert. Wenn der Server eine Anfrage für eine bestimmte URL erhält, verwendet ASP.NET die Hierarchie der Konfigurationseinstellungen im Cache, um die angeforderte Ressource zu finden.
Sofern das Attribut restartOnExternalChanges="false" nicht im Konfigurationsabschnittselement enthalten ist oder die Konfigurationseinstellungen in einer separaten Datei enthalten sind, die über das Attribut configSource mit der Datei Web.config verknüpft ist, wird die Anwendung neu gestartet, wenn sich die Konfiguration ändert.
Mehrere ASP.NET-Ressourcen in einer einzigen Datei konfiguriert.
Das Speichern von Einstellungen für mehrere Standorte in einer einzigen Web.config-Datei kann nützlich sein, wenn Sie eine große Anzahl von Konfigurationseinstellungen verwalten oder Client-Websites in einer ISP-Einstellung verwalten. Mithilfe des Pfadattributs des Standortelements können Sie mehrere spezifische ASP.NET-Ressourcen konfigurieren, die im Anwendungsunterverzeichnis gespeichert sind.
Informationen zur Verwendung des Standortelements finden Sie unter Gewusst wie: Konfigurieren eines bestimmten Verzeichnisses mithilfe von Standorteinstellungen.
Einstellungen in virtuellen Verzeichnissen stehen in Konflikt mit Einstellungen in physischen Verzeichnissen.
Konfigurationseinstellungen für virtuelle Verzeichnisse sind unabhängig von der physischen Verzeichnisstruktur und virtuelle Verzeichnisse müssen sorgfältig organisiert werden, um Konfigurationsprobleme zu vermeiden. Beispielsweise verfügen Sie möglicherweise über eine ASP.NET-Datei mit dem Namen MyResource.aspx und der folgenden physischen Verzeichnisstruktur.
C:
Subdir1
Subdir2
MyResource.aspx
Darüber hinaus befindet sich möglicherweise eine Konfigurationsdatei in Subdir1, ein virtuelles Verzeichnis mit dem Namen Vdir1, das c:Subdir1 zugeordnet ist, und ein virtuelles Verzeichnis mit dem Namen Vdir1, das c:Subdir1Subdir2 zugeordnet ist Verzeichnis von Vdir2. Wenn ein Client die URL http://localhost/vdir1/subdir2/MyResource.aspx verwendet, um auf eine Ressource zuzugreifen, die sich physisch unter c:Subdir1Subdir2MyResource.aspx befindet, erbt die Ressource die Konfigurationseinstellungen von Vdir1. Wenn ein Client jedoch über die URL http://localhost/vdir2/MyResource.aspx auf dieselbe Ressource zugreift, erbt die Ressource nicht die Einstellungen von Vdir1. Das Erstellen virtueller Verzeichnisse auf diese Weise kann zu unerwarteten Ergebnissen oder sogar zum Ausfall der Anwendung führen. Es wird empfohlen, virtuelle Verzeichnisse nicht zu verschachteln und wenn nötig, nur eine Web.config-Datei zu verwenden.
Einschränken der ASP.NET-Vererbung
Möglicherweise möchten Sie die Vererbung von Konfigurationseinstellungen einschränken, um die Anwendungsleistung zu verbessern, eine hohe Zuverlässigkeit aufrechtzuerhalten und die Verwaltung zu vereinfachen. Die Einschränkungsfunktionalität wird durch die Eigenschaften „allowOverride“, „lockAttributes“, „lockAllAttributesExcept“, „lockAllElementsExcept“, „lockItem“ und „lockElements“ gesteuert. Weitere Informationen zu diesen Eigenschaften finden Sie unter msdn.