Estructura de configuración
Los archivos de configuración de ASP.NET se denominan archivos Web.config y pueden aparecer en varios directorios dentro de una aplicación ASP.NET. La jerarquía de configuración de ASP.NET tiene las siguientes características:
Utilice un archivo de configuración que se aplique a los recursos en el directorio en el que se encuentra el archivo de configuración y todos sus subdirectorios.
Le permite colocar datos de configuración en una ubicación que le dará el alcance adecuado (la computadora completa, todas las aplicaciones web, una sola aplicación o un subdirectorio dentro de esa aplicación).
Permite anular los ajustes de configuración heredados de niveles superiores en la jerarquía de configuración. También permite bloquear los ajustes de configuración para evitar que se sobrescriban con ajustes de configuración de nivel inferior.
Organice grupos lógicos de ajustes de configuración en secciones.
Herencia de configuración
Todas las aplicaciones .NET Framework heredan los valores de configuración básicos y los valores predeterminados de un archivo llamado systemrootMicrosoft .NETFrameworkversionNumberCONFIGMachine.config. El archivo Machine.config se utiliza para los ajustes de configuración a nivel de servidor. Algunas de estas configuraciones no se pueden anular en archivos de configuración ubicados en niveles inferiores en la jerarquía.
Las aplicaciones cliente .NET (aplicaciones de consola y Windows) utilizan un archivo de configuración denominado ApplicationName.config para anular la configuración heredada. Las aplicaciones ASP.NET utilizan un archivo de configuración denominado Web.config para anular la configuración heredada.
La raíz de la jerarquía de configuración de ASP.NET es un archivo llamado archivo raíz Web.config, que se encuentra en el mismo directorio que el archivo Machine.config. El archivo raíz Web.config hereda todas las configuraciones del archivo Machine.config. El archivo raíz Web.config contiene configuraciones que se aplican a todas las aplicaciones ASP.NET que ejecutan una versión específica de .NET Framework. Debido a que cada aplicación ASP.NET hereda la configuración predeterminada del archivo Web.config raíz, solo necesita crear archivos Web.config para configuraciones que anulan la configuración predeterminada.
Herencia en elementos de colección
Algunos elementos de configuración son colecciones, por ejemplo, el elemento de espacios de nombres y el elemento customErrors.
En una colección, los ajustes de configuración generalmente se agregan a la colección mediante el elemento secundario agregado, se eliminan por nombre de clave mediante el elemento secundario eliminado, o se puede borrar toda la colección mediante el elemento secundario claro. A menos que se permitan duplicados, las configuraciones agregadas en un perfil secundario anularán las configuraciones con el mismo nombre de clave en el perfil principal.
Tenga en cuenta
que algunas colecciones que existían en versiones anteriores de .NET Framework usaban nombres de elementos diferentes para agregar elementos secundarios. Por ejemplo, el elemento customErrors utiliza el elemento secundario error para agregar errores personalizados a la colección.
Si se recibe una solicitud para un archivo que no existe en el directorio SubDir1, ASP.NET comenzará a buscar en la jerarquía de configuración y comenzará desde el archivo Web.config más local (si existe, puede estar en el directorio actual o puede estar en el directorio actual). ASP.NET buscará en el elemento de error (Esquema de configuración de ASP.NET) de customErrors un atributo statusCode igual a "404". Una vez que ASP.NET encuentra un error 404 en los ajustes de configuración, la URL en el atributo de redireccionamiento se devuelve como respuesta.
Alcance de los ajustes de configuración
Los ajustes de configuración tienen diferentes alcances: algunos tienen un alcance global y otros solo son válidos para el alcance de la aplicación (archivo raíz Web.config o archivo Machine.config).
El alcance de una sección de configuración se define para todas las secciones contenidas en ASP.NET en el atributo enableDefinition del elemento de sección configSections (esquema de configuración general) en el archivo Machine.config. Por ejemplo, el elemento de autenticación (esquema de configuración de ASP.NET) tiene el atributo enableDefinition del elemento MachineToApplication. Esto significa que el elemento de autenticación se puede configurar en el archivo Machine.config de nivel de aplicación, el archivo raíz Web.config y el archivo Web.config. Si se establece en el nivel de subdirectorio, se generará un error. Si el atributo enableDefinition no está definido para una sección, el valor predeterminado es En todas partes.
El alcance de los valores de configuración para cada elemento en los valores de configuración de ASP.NET y los valores de configuración generales (ASP.NET) se enumera junto a Configurable en la tabla Información del elemento.
La siguiente tabla enumera el nivel de cada archivo en la jerarquía de configuración, el nombre de cada archivo y una descripción de las características heredadas importantes de cada archivo.
Nivel de configuración | Nombre de archivo | Descripción del archivo |
Servidor | Machine.config | El archivo Machine.config contiene el esquema ASP.NET para todas las aplicaciones web en el servidor. Este archivo se encuentra en el nivel superior de la jerarquía de combinación de configuración. |
Web.config | raíz | se almacena en el mismo directorio que el archivo Machine.config y contiene valores predeterminados para la mayor parte de la sección de configuración system.web. En tiempo de ejecución, este archivo se combina desde el segundo nivel desde arriba en la jerarquía de configuración. |
Sitio | Web.config | El archivo Web.config para un sitio específico contiene configuraciones que se aplican a ese sitio y se heredan en todas las aplicaciones y subdirectorios ASP.NET de ese sitio. |
Raíz de la aplicación ASP.NET | Web.config | El archivo Web.config para una aplicación ASP.NET específica se encuentra en el directorio raíz de la aplicación. Contiene la configuración. |
Subdirectorio de aplicación ASP.NET | Web.config | El archivo Web.config para un subdirectorio de aplicación contiene configuraciones que se aplican a este subdirectorio y se heredan hacia abajo en todos los subdirectorios de sus ramas. |
Directorio de aplicaciones cliente | ApplicationName.config | El archivo ApplicationName.config contiene configuraciones para aplicaciones cliente de Windows (no aplicaciones web). |
Elemento ProcessModel
El elemento ProcessModel (esquema de configuración de ASP.NET) configura el modelo de procesamiento utilizado para el servidor (incluidas todas las aplicaciones ASP.NET en el servidor). Por lo tanto, la configuración de ProcessModel solo se puede colocar en el archivo Machine.config y no puede ser anulada por la configuración de ningún archivo Web.config.
Los cambios en el elemento ProcessModel solo tendrán efecto después de que se reinicie el proceso de trabajo, en lugar de inmediatamente después de establecer cambios como otros elementos de configuración.
Nota
Cuando ASP.NET se ejecuta en Internet Information Services (IIS) 6.0 en modo de aislamiento de proceso de trabajo, se utiliza el modelo de proceso de IIS 6.0 y se ignora la configuración en la sección ProcessModel del archivo Machine.config. Para configurar la identidad del proceso, la operación por turnos u otros valores del modelo de proceso, use el Administrador de IIS para configurar el proceso de trabajo de IIS de la aplicación.
Cálculo en tiempo de ejecución de los ajustes de configuración
Cuando el servidor recibe una solicitud para un recurso web específico, ASP.NET calcula jerárquicamente los ajustes de configuración para ese recurso utilizando todos los archivos de configuración ubicados en la ruta del directorio virtual de la URL solicitada. Los valores de configuración local anulan los valores del archivo de configuración principal.
Estas configuraciones se calculan una vez y luego se almacenan en caché para solicitudes posteriores. ASP.NET monitorea automáticamente los cambios en un archivo y recalcula el caché cuando cambia cualquier archivo de configuración dentro de la jerarquía del archivo. Cuando el servidor recibe una solicitud de una URL específica, ASP.NET utiliza la jerarquía de ajustes de configuración en el caché para encontrar el recurso solicitado.
A menos que el atributo restartOnExternalChanges="false" esté incluido en el elemento de la sección de configuración, o que los ajustes de configuración estén contenidos en un archivo separado vinculado al archivo Web.config usando el atributo configSource, la aplicación se reiniciará cuando cambie la configuración.
Múltiples recursos ASP.NET configurados en un solo archivo
Almacenar configuraciones para múltiples ubicaciones en un solo archivo Web.config puede ser útil al administrar una gran cantidad de configuraciones o administrar sitios web de clientes en una configuración de ISP. Usando el atributo de ruta del elemento de ubicación, puede configurar múltiples recursos ASP.NET específicos almacenados en el subdirectorio de la aplicación.
Para obtener información sobre cómo utilizar el elemento de ubicación, consulte Cómo: configurar un directorio específico mediante la configuración de ubicación.
Las configuraciones de los directorios virtuales entran en conflicto con las configuraciones de los directorios físicos
Las configuraciones de los directorios virtuales son independientes de la estructura del directorio físico y los directorios virtuales deben organizarse cuidadosamente para evitar problemas de configuración. Por ejemplo, es posible que tenga un archivo ASP.NET denominado MyResource.aspx con la siguiente estructura de directorio físico.
C:
Subdir1
Subdir2
MyResource.aspx
Además, es posible que tenga un archivo de configuración ubicado en Subdir1, un directorio virtual llamado Vdir1 asignado a c:Subdir1 y un directorio virtual llamado Vdir1 asignado a c:Subdir1Subdir2 El directorio virtual directorio de Vdir2. Si un cliente usa la URL http://localhost/vdir1/subdir2/MyResource.aspx para acceder a un recurso ubicado físicamente en c:Subdir1Subdir2MyResource.aspx, el recurso hereda los ajustes de configuración de Vdir1. Sin embargo, si un cliente accede al mismo recurso mediante la URL http://localhost/vdir2/MyResource.aspx, el recurso no hereda la configuración de Vdir1. La creación de directorios virtuales de esta manera puede provocar resultados inesperados o incluso provocar que la aplicación falle. Se recomienda no anidar directorios virtuales y, si es necesario, utilizar solo un archivo Web.config.
Limitación de la herencia de ASP.NET
Es posible que desee limitar la herencia de los valores de configuración para mejorar el rendimiento de la aplicación, mantener una alta confiabilidad y simplificar la administración. La funcionalidad de restricción está controlada por las propiedades enableOverride, lockAttributes, lockAllAttributesExcept, lockAllElementsExcept, lockItem y lockElements. Consulte msdn para obtener más información sobre estas propiedades.