¿Por qué necesitamos dos archivos web.config en una aplicación web?

Me gustaría compartir lo que he entendido sobre trabajar con más de un archivo Web.config de mi última aplicación ASP.NET. Planeamos tener diferentes archivos Web.config para subcarpetas en la carpeta raíz de la aplicación. Nos ayuda a tener archivos de configuración pequeños y fáciles de mantener.

Jerarquía de archivos Web.config

La configuración de todo el sistema se define en Machine.config para .NET Framework. El archivo Machine.config se encuentra en la carpeta C: \ WINDOWS \ Microso ft / \ Framework \ v1.1.4322 \ CONFIG . La configuración definida en este archivo es aplicable a todas las aplicaciones ASP.NET en ese sistema.

Podemos anular esta configuración predeterminada al incluir un archivo Web.config en la carpeta raíz de la aplicación.

Al incluir archivos Web.config en subcarpetas, podemos anular la configuración definida en el archivo Web.config en la carpeta raíz de la aplicación.

Las siguientes son declaraciones de sección de muestra de un archivo Machine.config :

<section name = "processModel"
type = “System.Web.Configuration.ProcessModelConfigurationHandler,
System.Web, Versión = 1.0.5000.0, Cultura = neutral,
PublicKeyToken = b03f5f7f11d50a3a ”
allowDefinition = “MachineOnly” />

<section name = "sessionState"
type = “System.Web.SessionState.SessionStateSectionHandler,
System.Web, Versión = 1.0.5000.0, Cultura = neutral,
PublicKeyToken = b03f5f7f11d50a3a ”
allowDefinition = “MachineToApplication” />

<section name = "appSettings"
type = “System.Configuration.NameValueFileSectionHandler, System,
Versión = 1.0.5000.0, Cultura = neutral,
PublicKeyToken = b77a5c561934e089 “/>

Hay un atributo allowDefinition especificado en las dos primeras declaraciones de section con los valores: MachineOnly y MachineToApplication .

¿Qué significa?

Si allowDefinition="MachineOnly" , no podemos anular esta sección ni en el nivel de la aplicación ni en el nivel de la carpeta. La única sección declarada en el archivo Machine.config con esta configuración es processModel .

Si allowDefinition="MachineToApplication" , podemos anular estas secciones mediante el directorio raíz Web.config . Las secciones con esta configuración en Machine.config son authentication , machineKey , sessionState , trust y securityPolicy .

Si el atributo allowDefinition se omite en una declaración de sección del archivo Machine.config , podemos anular esa sección en cualquier nivel.

Podemos anular la sección appSettings en cualquier nivel y acceder a ella usando ConfigurationSettings.AppSettings fácilmente.

¿Qué hay en el proyecto de muestra?

El código fuente de muestra es una aplicación web ASP.NET simple con tres formularios Web Forms y tres archivos Web.config . La carpeta raíz tiene una subcarpeta SubFolder_L1 que tiene SubFolder_L2 , cada uno tiene un formulario web y un archivo Web.config .

Los archivos Web.config tienen claves diferentes y anuladas. El archivo Web.config en la carpeta raíz tiene las siguientes declaraciones de appSettings :

El archivo Web.config en Subfolder_L1 tiene las siguientes declaraciones de appSettings :

El archivo de configuración de la subcarpeta anula la configuración de color . Podemos leer el elemento root de Subfolder_L1 o Subfolder_L2 con el siguiente código:

lblConfig.Text = ConfigurationSettings.AppSettings [“root”];

Pero no podemos leer los ajustes de configuración definidos en el archivo Web.config de Subfolder_L1 desde la carpeta raíz.

Gracias por A2A, espero que esto te ayude.

En una aplicación web puede tener múltiples archivos web.config, generalmente necesitamos tal escenario cuando necesitamos personalizar la configuración para una carpeta específica en nuestra aplicación. Por ejemplo, tenemos una carpeta llamada admin en nuestra aplicación a la que queremos acceder por los usuarios que tienen un rol de administrador, luego, dentro de esa carpeta de administrador, definimos la configuración para los roles de usuario que pueden acceder a esa carpeta.

More Interesting

¿Cuáles son algunas cosas interesantes y sofisticadas que puedo construir en JS y frameworks web que se verían atractivas en las aplicaciones universitarias / laborales?

Cómo escalar esta aplicación de base de datos para manejar decenas de millones de registros

¿Qué lado del cliente JS será el mejor para una aplicación web a gran escala, en términos de rendimiento y usabilidad?

¿Cuál es el mejor sistema de votación de ideas web?

¿Cuál es el mejor sitio y / o aplicación para iPhone para rastrear la colección de juegos / piezas LEGO de mi hijo?

¿Es cierto que los trabajos de programación front-end web son desordenados y pagan menos que la programación de back-end y de base de datos?

¿Cuál es la mejor herramienta para crear formularios en línea que puedo alojar internamente?

Supervisión del servidor: ¿Cuál es el mejor enfoque de diseño técnico para crear una página de estado para su aplicación web?

¿Cuándo usan los desarrolladores JavaScript y por qué?

Cómo proteger mi unidad USB con contraseña

¿Cómo se aprende a escribir mejores métodos?

¿Qué marco JS recomendaría para crear una aplicación web como YouTube?

¿Por qué tomó tanto tiempo que una aplicación como What'sapp se generalizara y cuán complejo es el código utilizado para hacerlo?

¿Cuáles son las precauciones antes de poner en funcionamiento mi aplicación web?

¿Cómo funcionaría la autenticación transparente de dos factores, usando una tarjeta de acceso, para aplicaciones web?