Format von ASP.NET-Konfigurationsdateien

Die Konfigurationsinformationen für ASP.NET-Ressourcen sind in einer Auflistung mit Konfigurationsdateien enthalten, die alle mit Web.config benannt sind. Jede Konfigurationsdatei enthält eine geschachtelte Hierarchie von XML-Tags und untergeordneten XML-Tags, durch deren Attribute die Konfigurationseinstellungen festgelegt werden. Da die Tags ein einwandfreies XML-Format aufweisen müssen, wird bei Tags, untergeordneten Tags und Attributen zwischen Groß-/Kleinschreibung unterschieden. Tagnamen und Attributnamen sind in Kamel-Schreibweise verfasst. Dies bedeutet, dass das erste Zeichen eines Tagnamens ein Kleinbuchstabe und das erste Zeichen aller nachfolgenden, damit verketteten Wörter ein Großbuchstabe ist. Attributwerte verfügen über die Pascal-Schreibweise, d. h., das erste Zeichen sowie auch das erste Zeichen aller nachfolgenden, damit verketteten Wörter ist ein Großbuchstabe. true und false bilden eine Ausnahme, da sie immer mit einem Kleinbuchstaben beginnen.

Die gesamten Konfigurationsinformationen befinden sich zwischen den XML-Stammtags <configuration> und </configuration>. Die Konfigurationsinformationen innerhalb dieser Tags sind in zwei Hauptbereiche untergliedert: den Deklarationsbereich des Konfigurationsabschnittshandlers und den Bereich mit Konfigurationsabschnittseinstellungen.

Die Deklarationen des Konfigurationsabschnittshandlers befinden sich am Anfang der Konfigurationsdatei zwischen den Tags <configSections> und </configSections>. Durch jede in einem <section>-Tag enthaltene Deklaration wird der Name eines Abschnitts festgelegt, in dem eine bestimmte Gruppe von Konfigurationsdaten sowie der Name der .NET Framework-Klasse angegeben ist, durch die die Konfigurationsdaten in diesem Abschnitt verarbeitet werden.

Der Bereich mit Konfigurationsabschnittseinstellungen folgt direkt auf den <configSections>-Bereich und enthält die aktuellen Konfigurationseinstellungen. Für jede Deklaration im <configSections>-Bereich ist ein entsprechender Konfigurationsabschnitt vorhanden. Jeder Konfigurationsabschnitt enthält untergeordnete Tags mit Attributen, durch die die Einstellungen für den Abschnitt festgelegt werden.

Im folgenden Dateibeispiel für Web.config werden zwei Handler für einen Konfigurationsabschnitt (<section>) deklariert. Ein Handler ist für die Verwaltung der Anwendungseinstellungen und der andere für die Verwaltung des Sitzungszustands verantwortlich.

<configuration>
   <configSections>
      <section name="appSettings"   
         type="System.Configuration.NameValueFileSectionHandler, 
         System, Version=1.0.3300.0, 
         Culture=neutral, PublicKeyToken=b77a5c561934e089"/>         
      <section name="sessionState" 
         type="System.Web.SessionState.SessionStateSectionHandler, 
         System.Web, Version=1.0.3300.0, Culture=neutral, 
         PublicKeyToken=b03f5f7f11d50a3a" 
         allowDefinition="MachineToApplication"/>
   </configSections>

   <appSettings>
      <add key="dsn" value="localhost;uid=MyUserName;pwd=;"/>
      <add key="msmqserver" value="server\myqueue"/>
   </appSettings>
   
   <sessionState cookieless="true" timeout="10"/>
</configuration>

Ein Handler für einen Konfigurationsabschnitt muss nur einmal deklariert werden. Der Handler kann in die Serverstammdatei Machine.config oder in eine Datei Web.config im virtuellen Verzeichnis mit den Webanwendungsdateien eingefügt werden. In übergeordneten Verzeichnissen deklarierte Konfigurationshandler werden automatisch an Konfigurationsdateien in Unterverzeichnissen vererbt. Weitere Informationen finden Sie unter Konfigurationsvererbung.

Konfigurationseinstellungen werden oftmals unterhalb von Tags zur Abschnittsgruppierung geschachtelt. Diese Abschnittstags oberster Ebene stellen normalerweise den Namespace dar, auf den die Konfigurationseinstellungen angewendet werden. Das auf oberster Ebene befindliche <system.net>-Tag entspricht z. B. den Einstellungen für Netzwerkklassen und das <system.web>-Tag den Einstellungen für die ASP.NET-Klassen.

Das folgende Beispiel veranschaulicht die Schachtelung von Tags.

<configuration>
   <configSections>
      <sectionGroup name="system.net">
         <section name="authenticationModules"
            type="System.Net.Configuration.NetAuthenticationModuleHandler, 
            System, Version=1.0.3300.0, Culture=neutral, 
            PublicKeyToken=b77a5c561934e089"/>                               
         <section name="webRequestModules" 
            type="System.Net.Configuration.WebRequestModuleHandler, 
            System, Version=1.0.3300.0, Culture=neutral,
            PublicKeyToken=b77a5c561934e089"/>
       </sectionGroup>

       <sectionGroup name="system.web">
          <section name="authorization" 
             type="System.Web.Configuration.AuthorizationConfigHandler, 
             System.Web, Version=1.0.3300.0, Culture=neutral, 
             PublicKeyToken=b03f5f7f11d50a3a"/>            
          <section name="sessionState" 
             type="System.Web.SessionState.SessionStateSectionHandler,
             System.Web, Version=1.0.3300.0, Culture=neutral,
             PublicKeyToken=b03f5f7f11d50a3a"
             allowDefinition="MachineToApplication"/>        
       </sectionGroup>
    </configSections>

   <system.net>
      <! — Net Class Settings would go here. -->
   </system.net>
   <system.web>
        <authorization>
            <allow users="*"/> <!-- Allow all users -->
            <!-- Allow or deny specific users.
            allow users="[comma separated list of users]"
                  roles="[comma separated list of roles]"/>
            <deny users="[comma separated list of users]"
                  roles="[comma separated list of roles]"/>
            -->
        </authorization>
        <sessionState 
            sqlConnectionString="data source=localhost;
               Integrated Security=SSPI;
               Initial Catalog=northwind"
            cookieless="false" 
            timeout="10"/>
   </system.web>
</configuration>

Seitens der ASP.NET-Konfigurationsinfrastruktur bestehen keine Einschränkungen im Hinblick auf die Konfigurationsdatentypen, die von der Infrastruktur unterstützt werden. Die Klassen für Konfigurationsabschnittshandler verarbeiten alle in der Datei Web.config enthaltenen Daten. Sie können die mit .NET Framework bereitgestellten, vordefinierten Konfigurationsabschnittshandler verwenden oder eigene Handler zur Verarbeitung benutzerdefinierter Konfigurationsdaten erstellen.

Informationen zum Erstellen benutzerdefinierter Konfigurationstypen finden Sie unter Erstellen neuer Konfigurationsabschnitte.

Siehe auch

ASP.NET-Konfiguration | Konfigurieren von .NET Framework-Anwendungen | Erstellen neuer Konfigurationsabschnitte