Within an web.config
-file in an ASP.NET-application some sections of config, like appSettings
and connectionStrings
, supports the attributes file
and configSource
.
What is the difference between using the file
-attribute and the configSource
-attribute? When should you use which attribute and can you use both?
<?xml version="1.0"?> <configuration> <appSettings file="AppSettings.config"> </appSettings> <connectionStrings configSource="ConnectionStrings.config"> </connectionStrings> <!-- ... --> </configuration>
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
file
attribute
- Specifies a relative path to an external file that contains custom application configuration settings
- specific to the
appSettings
section - will merge (and override) settings in the .config file
- will not cause web application to restart when modifying the specified file
- http://msdn.microsoft.com/en-US/library/ms228154(v=vs.100).aspx
- Using the Configuration.AppSettings.Settings.Add API will result in all settings being merged back into the main
.config
on a Configuration.Save call. - since .NET 1.1
- Exception is not thrown if file does not exist.
configSource
attribute
- can apply to most sections of a configuration file, not just
appSettings
- will override the entire section with the external file, no merging
- CAN cause web application to restart
- http://msdn.microsoft.com/en-US/library/system.configuration.sectioninformation.configsource(v=vs.100).aspx
- Using the Configuration.AppSettings.Settings.Add API will result in all settings being added to the file specified in
configSource
on a Configuration.Save call. - since .NET 2.0
System.Configuration.ConfigurationErrorsException
is thrown if config source file does not exist.
The file
attribute specifies an external file containing custom settings like you do in the appSettings entry of the web.config file.
Meanwhile, the external file specified in the configSource
attribute contains the settings for the section which you declare the configSource for. For example, if you use the configSource
attribute of the pages section, then the external file will contain the settings for the pages section.
The custom settings declared in the external config specified in the
file
attribute will be merged with the settings in theappSettings
section in theweb.config
file. In the meanwhile, theconfigSource
does not support merging, it means that you’ll have to move the entire
section settings into the external file.
http://www.codeproject.com/Messages/1463547/Re-difference-between-configSource-and-file-attrib.aspx
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0