在 ASP.NET 应用程序中的web.config
文件中,配置的某些部分(如appSettings
和connectionStrings
(支持属性file
和configSource
。
使用 file
-属性和configSource
属性有什么区别?什么时候应该使用哪个属性,可以同时使用这两个属性吗?
<?xml version="1.0"?>
<configuration>
<appSettings file="AppSettings.config">
</appSettings>
<connectionStrings configSource="ConnectionStrings.config">
</connectionStrings>
<!-- ... -->
</configuration>
file
属性
- 指定包含自定义应用程序配置设置的外部文件的相对路径
- 特定于
appSettings
部分 - 将合并(和覆盖(.config 文件中的设置
- 修改指定文件时不会导致 Web 应用程序重新启动
- http://msdn.microsoft.com/en-US/library/ms228154(v=vs.100(.aspx
- 使用 Configuration.AppSettings.Settings.Add API 将导致所有设置合并回 Configuration.Save 调用的主
.config
。 - 自 .NET 1.1 起
- 如果文件不存在,则不会引发异常。
configSource
属性
- 可以应用于配置文件的大部分部分,而不仅仅是
appSettings
- 将用外部文件覆盖整个部分,不合并
- 可能导致 Web 应用程序重新启动
- http://msdn.microsoft.com/en-US/library/system.configuration.sectioninformation.configsource(v=vs.100(.aspx
- 使用 Configuration.AppSettings.Settings.Add API 将导致将所有设置添加到 Configuration.Save 调用的
configSource
中指定的文件中。 - 自 .NET 2.0 起
- 如果配置源文件不存在,则会引发
System.Configuration.ConfigurationErrorsException
。
file
属性指定包含自定义设置的外部文件,就像在 web.config 文件的 appSettings 条目中所做的那样。同时,在 configSource
属性中指定的外部文件包含为其声明 configSource 的部分的设置。例如,如果使用页面部分的 configSource
属性,则外部文件将包含页面部分的设置。
在外部配置中声明的自定义设置在
file
属性将与appSettings
中的设置合并 部分web.config
。与此同时,configSource
不支持合并,这意味着您必须移动整个 部分设置到外部文件中。
http://www.codeproject.com/Messages/1463547/Re-difference-between-configSource-and-file-attrib.aspx