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.
- ¿Cuáles son los mejores temas de WP, aplicaciones web y otras herramientas para crear sitios web de directorio seleccionados?
- ¿Alguien ha usado una empresa de desarrollo web llamada MacAppStudio?
- ¿Qué es WAFS y cómo funciona WAFS (seguridad de firewall de aplicaciones web)?
- Cómo mejorar mis habilidades en el desarrollo web front-end
- ¿Cuáles son algunas buenas alternativas de RescueTime?
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.