Compartir a través de


El sistema de configuración en IIS 7

de Walter Oliver

Información general

IIS 7 presenta un nuevo sistema de configuración, en el núcleo de todas las nuevas características relacionadas con la administración. El sistema de configuración se basa en archivos XML distribuidos, de texto claro, que retienen los ajustes de configuración para toda la plataforma del servidor web, incluidos IIS, ASP.NET y otros componentes, como FTP 7.5; Opcionalmente, se pueden establecer en los directorios de contenido junto con el contenido web si se desbloquea para ese nivel. Observe que los valores de configuración de FTP 6.0 se almacenan en MetaBase.

El administrador de la máquina puede delegar distintos niveles de la jerarquía de configuración a otros usuarios, como el propietario del sitio o el desarrollador de aplicaciones. Los valores predeterminados seguros y el bloqueo preconfigurado limitan el acceso de escritura a las opciones de configuración solo al administrador de la máquina (las excepciones son algunas configuraciones específicas del sitio, como DefaultDocument); sin embargo, las características de bloqueo sofisticadas y granulares permiten el desbloqueo seguro y la delegación de la administración de opciones de configuración específicas para más usuarios, para su ámbito del espacio de nombres web. El sistema es compatible con versiones anteriores en el nivel de API con versiones anteriores de IIS (después de instalar la capa de compatibilidad de MetaBase).

En el nivel raíz (o global), hay dos archivos independientes:

  • system32\inetsrv\config\applicationHost.config: retiene los valores predeterminados globales para la configuración del servidor web (IIS).
  • \Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config: contiene los valores predeterminados globales de la configuración de .NET Framework, incluidos algunos de los ASP.NET (el resto de la configuración se encuentran en web.config en la misma carpeta, que a veces es llamada web.config raíz).

La razón por la que todavía hay dos archivos independientes es porque las dos tecnologías tienen una versión diferente (según la programación y el producto). IIS forma parte de Windows y .NET Framework puede tener una versión independiente.

En los directorios de contenido web, puede haber archivos web.config opcionales que controlen el comportamiento de su nivel de jerarquía y hacia abajo. Podrían ser locales o remotos (si el directorio de contenido está en un recurso compartido UNC, por ejemplo). Pueden contener IIS, ASP.NET o cualquier otra configuración de .NET Framework que se pueda especificar en su nivel. De manera predeterminada, no hay archivos web.config.

Jerarquía

En términos de jerarquía de herencia, el archivo raíz es machine.config, web.config en el mismo directorio (denominado root web.config), luego applicationHost.config y, a continuación, los archivos web.config opcionales a lo largo del espacio de nombres, como se muestra en el diagrama siguiente. Diagram showing the relationship between the files contained in the I I S 7 and Config Files namespaces.

Secciones

Dentro de un archivo de configuración, los valores se organizan de forma estructurada, en base de una unidad llamada "sección". La sección de configuración es un grupo de opciones de configuración relacionadas lógicamente que se pueden implementar como un todo o anular el registro del sistema en su conjunto, y normalmente se consumen en un módulo de servidor.

En otras palabras, casi todos los módulos en tiempo de ejecución que se ejecutan en el proceso de trabajo tienen una sección de configuración correspondiente para él. La sección de configuración también es la unidad de extensibilidad: la adición de nuevas opciones al esquema de configuración se realiza mediante la extensión de una sección existente o agregando una o varias secciones a ella.

Las secciones se agrupan aún más en colecciones relacionadas lógicamente, llamadas "grupos de secciones". Los grupos de secciones no son la unidad de implementación o el registro, ni ninguna otra operación sustancial (por ejemplo, bloqueo, cifrado). No tienen configuraciones en ellos. Su propósito es estructurar aún más la organización de la configuración y evitar una larga lista plana de secciones de configuración. Se usan para compilar una jerarquía de configuración, por lo que tienen relaciones entre ellos (elemento primario o secundario).

En otras palabras, los grupos de secciones se pueden anidar. Una sección determinada siempre pertenece solo a un grupo de secciones y no puede contener otra sección (o grupos de secciones). Un grupo de secciones determinado puede pertenecer a un grupo de secciones primario y puede contener cero o más grupos de secciones secundarios. Normalmente contiene más de una sección; de lo contrario, no hay una buena razón para tenerlo en primer lugar (sin embargo, los clientes pueden ampliar el esquema creando sus propios grupos de secciones que solo tienen una sección, por cualquier motivo).

Aquí hay un ejemplo que demuestra las secciones y los grupos de secciones:

<!-- section group for web server configuration -->
<system.webServer>
  <!-- section group for web server security configuration -->
  <security>
    <!-- section group for web server authentication configuration -->
    <authentication>
      <!-- three sections for authentication -->
      <basicAuthentication ... />
      <windowsAutnentication ... />
      <anonymousAuthentication ... />
    </authentication>
  </security>
</system.webServer>

Cada sección tiene un nombre. El nombre corto es el nombre de la propia sección y el nombre largo es el nombre completo, incluido todos los grupos de secciones contenedor. Por ejemplo, el nombre completo de "windowsAuthentication" es "system.webServer/security/authentication/windowsAuthentication". Esta organización jerárquica permite secciones futuras (y grupos de secciones) con el mismo nombre, pero en grupos de secciones diferentes.

Cada nivel del espacio de nombres de dirección URL puede tener la configuración asociada. La configuración de un nivel determinado hereda los niveles secundarios, a menos que se invalide específicamente por un nivel secundario. Una manera sencilla de lograr la configuración por dirección URL es mediante archivos web.config, en las carpetas físicas del sistema de archivos que se asignan a las rutas de acceso virtuales. En el nivel raíz (nivel de equipo), se deben usar archivos independientes, en función del grupo de secciones de configuración (que se definirá más adelante en el documento; para fines actuales, considere que es el nombre del elemento XML que contiene la configuración):

Grupo de secciones Descripción Archivo raíz
system.applicationHost Sistema de activación de Windows: modelo de proceso System32\inetsrv\config\applicationHost.config
system.webServer IIS: servidor web System32\inetsrv\config\applicationHost.config
system.web ASP.NET Windows\microsoft.net\framework\v2.0.50727\config\web.config
Sistema.* Otro marco de .NET Windows\microsoft.net\framework\v2.0.50727\config\machine.config
[Microsoft other] Microsoft otros Windows\microsoft.net\framework\v2.0.50727\config\machine.config
[personalizado] Terceros Ya sea máquina.config o raíz web.config o applicationHost.config, hasta 3rd-parte/cliente

El formato de persistencia de la configuración es XML; por lo tanto, resulta útil describir las asignaciones entre las unidades organizativas de configuración y la terminología XML. Los grupos de secciones y las secciones son elementos XML. Dentro de una sección, la configuración se organiza en unidades más pequeñas que siguen estrechamente la terminología XML:

Unidad de configuración Terminología XML Descripción
Elemento configuración Elemento XML Contiene otras unidades secundarias; no tiene ningún valor.
Colección de configuraciones Elemento XML Caso privado del elemento: contiene un grupo de elementos en forma de agregar/quitar/borrar.
Propiedad de configuración Atributo XML Contiene solo un valor; no contiene unidades secundarias.

El sistema de configuración se basa en un esquema declarativo, en su núcleo. El esquema de configuración abarca varios archivos, que residen en una ubicación conocida: system32\inetsrv\config\schema. De manera predeterminada, solo los administradores de máquinas tienen acceso a esta carpeta. Los clientes o terceros pueden agregar archivos de esquema para sus secciones personalizadas copiándolos en ese directorio. El sistema de configuración los recogerá automáticamente cuando se inicie, en el proceso del autor de la llamada a la configuración. Si el sistema de configuración ya se está ejecutando, no recogerá los cambios en los archivos de esquema ni en los nuevos archivos.

No edite IIS u otros archivos de esquema instalados en este directorio, ya que los errores pueden dar lugar a un esquema dañado y a la incapacidad del servidor de iniciarse.

Nota:

No hay ninguna interfaz de programación de alto nivel para obtener y establecer archivos de esquema, a menos que la API de acceso a archivos tradicional y el análisis o edición XML. Siempre se recomienda realizar copias de seguridad del estado confidencial, como la carpeta de esquema, antes de realizar cambios en él.

Tres archivos componen el esquema unificado de la plataforma de servidor web:

  • IIS_schema.xml: trata la configuración y los grupos de secciones del sistema de activación de Windows e IIS web.
  • ASPNET_schema.xml: trata la configuración de ASP.NET en el grupo de secciones.
  • FX_schema.xml: trata otras opciones de configuración de .NET Framework en varios grupos de secciones.

También encontrará FTP_schema.xml si tiene instalada la característica FTP de IIS 7.