Estructura de archivos de configuración de ASP.NET (secciones y controladores de sección)

Actualización: noviembre 2007

Toda la información de configuración de ASP.NET reside en el elemento configuration de los archivos Web.config. La información de configuración incluida en este elemento se agrupa en dos áreas principales: el área de declaración del controlador de sección de configuración y el área de valores de la sección de configuración.

Declaraciones del controlador de sección de configuración

El área de declaración del controlador de sección de configuración reside dentro del elemento configSections de los archivos Web.config. Contiene elementos section de configuración de ASP.NET donde se declaran los controladores de sección. Estas declaraciones de controlador de sección de configuración se pueden anidar en elementos sectionGroup para ayudar a organizar la información de configuración. Normalmente, los elementos sectionGroup representan el espacio de nombres al que se aplican los valores de configuración. Por ejemplo, todos los controladores de sección de configuración de ASP.NET se agrupan en el grupo de sección system.web, como se muestra en el ejemplo de código siguiente.

    <sectionGroup name="system.web"
      type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
      <!-- <section /> elements. -->
    </sectionGroup>

Hay una declaración de controlador de sección para cada sección de configuración en el área de valores de sección de configuración. Un controlador de sección es una clase de .NET Framework que implementa la interfaz ConfigurationSection. Las declaraciones de controlador de sección contienen el nombre de una sección de valores de configuración (como pages) y el nombre de la clase de controlador de sección que procesa los datos de configuración de esa sección (como System.Web.Configuration.PagesSection). Esto se muestra en el siguiente ejemplo de código:

      <section name="pages"
        type="System.Web.Configuration.PagesSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
      </section>

Sólo es necesario declarar una vez cada controlador de la sección de configuración. Los controladores de sección de las secciones de configuración de ASP.NET predeterminadas ya están declarados en el archivo Machine.config predeterminado. El archivo Web.config raíz y otros archivos de configuración de aplicaciones ASP.NET heredan automáticamente los controladores de configuración que se declaran en el archivo Machine.config. Sólo se necesita declarar un nuevo controlador de sección si se crea una clase de controlador de sección personalizada que controla una sección de configuración personalizada.

Las secciones de valores de configuración predefinidas de ASP.NET se muestran en Opciones de configuración de ASP.NET. Para obtener información sobre cómo definir sus propias secciones de configuración personalizadas y desarrollar sus propios controladores de sección de configuración para administrarlos, vea Clases utilizadas para crear identificadores de sección personalizados y Cómo: Crear secciones de configuración personalizadas mediante ConfigurationSection.

Valores de la sección de configuración

El área de valores de la sección de configuración va a continuación del área de declaración de controladores de sección de configuración y contiene los valores de configuración propiamente dichos.

De manera predeterminada, bien internamente o en uno de los archivos de configuración raíz, hay un elemento de sección de configuración especificado para cada elemento section y sectionGroup en el área configSections. Estos valores predeterminados se pueden ver en el archivo systemroot\Microsoft.NET\Framework\versionNumber\CONFIG\Machine.config.comments.

Un elemento de sección de configuración también podría contener elementos secundarios controlados por el mismo controlador de sección que el elemento primario. Por ejemplo, el siguiente elemento pages contiene un elemento namespaces que carece de un controlador de sección porque lo controla el controlador de sección pages.

  <pages
    buffer="true"
    enableSessionState="true"
    asyncTimeout="45"
  <!-- Other attributes. -->
  >
    <namespaces>
      <add namespace="System" />
      <add namespace="System.Collections" />
    </namespaces>
  </pages>

Ejemplo extraído de un archivo Web.config

En el siguiente ejemplo de código se muestra el lugar que ocupan los ejemplos de código anteriores en un archivo Web.config. Observe que el elemento namespaces del elemento pages carece de una declaración de controlador de sección de configuración. El motivo es que el controlador de sección System.Web.Configuration.PagesSection controla todos los elementos secundarios de la sección de configuración pages.

<?xml version="1.0" encoding="us-ascii"?>
<configuration>

<!-- Configuration section-handler declaration area. -->
  <configSections>
    <sectionGroup name="system.web"
      type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
      <section
        name="pages" 
        type="System.Web.Configuration.PagesSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
      />
      <!-- Other <section /> elements. -->
    </sectionGroup>
    <!-- Other <sectionGroup /> and <section /> elements. -->
  </configSections>

<!-- Configuration section settings area. -->
  <pages
    buffer="true"
    enableSessionState="true"
    asyncTimeout="45"
  <!-- Other attributes. -->
  >
    <namespaces>
      <add namespace="System" />
      <add namespace="System.Collections" />
    </namespaces>
  </pages>
  <!-- Other section settings elements. -->

</configuration>

Problemas de edición

Dado que los elementos de las secciones de configuración deben ser XML con formato correcto, los elementos y atributos distinguen entre mayúsculas y minúsculas. Hay muchas maneras de editar los valores de configuración. Para obtener más información, vea Editar los archivos de configuración de ASP.NET.

Los controladores de sección de configuración personalizados deben crearse mediante programación para poder utilizar los elementos de sección personalizados en los archivos de configuración de ASP.NET. Para obtener más información, vea Cómo: Crear secciones de configuración personalizadas mediante ConfigurationSection.

Atributos Path en los archivos de configuración

Cuando hacen referencia a una ruta de acceso de aplicación Web, los atributos path de los archivos Web.config pueden comenzar con el acceso directo "~/", que indica la raíz de la aplicación. Para obtener más información, vea Rutas de acceso a sitios Web ASP.NET.

Vea también

Tareas

Cómo: Crear secciones de configuración personalizadas mediante ConfigurationSection

Cómo: Crear secciones de configuración personalizadas mediante IConfigurationSectionHandler

Otros recursos

Administrar sitios web ASP.NET

Opciones de configuración de ASP.NET

Configurar aplicaciones