If you have planned to have different Web.config files for sub-folders in the application root folder. It helps us to have small and easily maintainable configuration files.
System wide configuration settings are defined in the Machine.config for the .NET Framework. The Machine.config file is located in the C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG
folder. The settings defined in this file are applicable to all ASP.NET applications in that system.
We can override these default settings by including a Web.config file in the application's root folder.
By including Web.config files in sub-folders, we can override the settings defined in the Web.config file in the application's root folder.
The following are sample section declarations from a Machine.config file:
<section name="processModel"
type="System.Web.Configuration.ProcessModelConfigurationHandler,
System.Web, Version=1.0.5000.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
allowDefinition="MachineOnly"/>
<section name="sessionState"
type="System.Web.SessionState.SessionStateSectionHandler,
System.Web, Version=1.0.5000.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
allowDefinition="MachineToApplication"/>
<section name="appSettings"
type="System.Configuration.NameValueFileSectionHandler, System,
Version=1.0.5000.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089"/>
There is an attribute
allowDefinition
specified in the first two section
declarations with the values: MachineOnly
and MachineToApplication
.What it does mean?
If
allowDefinition="MachineOnly"
, then we can not override this section either in application level or in folder level. The only section declared in the Machine.config file with this settings is processModel
.
If
allowDefinition="MachineToApplication"
, then we can override these sections by the root directoryWeb.config. Sections with this setting
in Machine.config are
authentication
, machineKey
, sessionState
, trust
, and securityPolicy
.
If
allowDefinition
attribute is omitted in a section declaration of the Machine.config file, we can override that section at any level.
We can override the section
appSettings
at any level and can access it by usingConfigurationSettings.AppSettings
easily.