Formato de los archivos de configuración de ASP.NET

La información de configuración de los recursos de ASP.NET se encuentra en un conjunto de archivos de configuración, cada uno de los cuales se denomina Web.config. Todos los archivos de configuración contienen una jerarquía anidada de etiquetas y subetiquetas XML con atributos que especifican las opciones de configuración. Debido a su formato XML, en las etiquetas, subetiquetas y atributos se distingue entre mayúsculas y minúsculas. En los nombres de etiquetas y atributos se utiliza la siguiente combinación de mayúsculas y minúsculas: la primera letra de la etiqueta es minúscula y la primera letra de cada palabra concatenada a continuación para formar el nombre es mayúscula. En los valores de los atributos se utiliza la combinación de mayúsculas y minúsculas de Pascal; es decir, la primera letra del valor es mayúscula y también la primera de cada palabra concatenada a continuación. Los valores true y false, que siempre se escriben en minúsculas, son una excepción.

Toda la información de configuración reside entre las etiquetas XML raíz <configuration> y </configuration>. La información de configuración comprendida entre las etiquetas se agrupa en dos áreas principales: el área de declaración del controlador de la sección de configuración y el área de opciones de la sección de configuración.

Las declaraciones de controlador de la sección de configuración aparecen al principio del archivo de configuración, entre las etiquetas <configSections> y </configSections>. Cada declaración contenida en una etiqueta <section> especifica el nombre de una sección que proporciona un conjunto específico de datos de configuración y el nombre de la clase de .NET Framework que procesa los datos de la sección.

El área de opciones de la sección de configuración va a continuación del área <configSections> y contiene las opciones de configuración propiamente dichas. Existe una sección de configuración para cada declaración del área <configSections>. Cada sección de configuración contiene subetiquetas con atributos que contienen las opciones de esa sección.

En el ejemplo de archivo Web.config siguiente se declaran dos controladores de configuración <section>. Uno de ellos administra las opciones de la aplicación y el otro administra el estado de la sesión.

<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>

Sólo es necesario declarar una vez cada controlador de la sección de configuración. El controlador se puede colocar en el archivo Machine.config raíz del servidor o en un archivo Web.config del directorio virtual que contenta los archivos de la aplicación Web. Los archivos de configuración situados en subdirectorios heredan automáticamente los controladores de configuración declarados en los directorios principales. Para obtener más información, vea Herencia de configuración.

A menudo, las opciones de configuración se anidan bajo etiquetas de agrupamiento de secciones. Normalmente, estas etiquetas de sección de nivel superior representan el espacio de nombres al que se aplican las opciones de configuración. Por ejemplo, la etiqueta de nivel superior <system.net> representa las opciones de las clases de red y la etiqueta <system.web> representa las opciones de las clases de ASP.NET.

En el ejemplo siguiente se muestra el anidamiento de las etiquetas.

<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>

En la infraestructura de configuración de ASP.NET no se atribuye ningún tipo de datos a las opciones de configuración. Las clases del controlador de sección de configuración procesan todos los datos de Web.config. Puede utilizar los controladores de sección de configuración predefinidos que se suministran con .NET Framework o crear sus propios controladores para procesar sus datos de configuración personalizados.

Para obtener información sobre cómo crear tipos de configuración personalizados, vea Crear nuevas secciones de configuración.

Vea también

Configuración de ASP.NET | Configurar aplicaciones | Crear nuevas secciones de configuración