ASP.NET web.config:configSource 与文件属性

Posted

技术标签:

【中文标题】ASP.NET web.config:configSource 与文件属性【英文标题】:ASP.NET web.config: configSource vs. file attributes 【发布时间】:2011-10-19 21:07:08 【问题描述】:

在 ASP.NET 应用程序的 web.config 文件中,某些配置部分(如 appSettingsconnectionStrings)支持属性 file@987654325 @

使用 file 属性和 configSource 属性有什么区别?什么时候应该使用哪个属性,可以同时使用吗?

<?xml version="1.0"?>
<configuration>
  <appSettings file="AppSettings.config">
  </appSettings>
  <connectionStrings configSource="ConnectionStrings.config">      
  </connectionStrings>
  <!-- ... -->
</configuration>

【问题讨论】:

【参考方案1】:

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 将用外部文件覆盖整个部分不合并 CAN cause web application to restart 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 的部分的设置。例如,如果您使用 pages 部分的configSource 属性,则外部文件将包含 pages 部分的设置。

在指定的外部配置中声明的自定义设置 file 属性将与appSettings 中的设置合并 web.config 文件中的部分。与此同时,configSource 是否支持合并,这意味着您必须移动整个 部分设置到外部文件中。

http://www.codeproject.com/Messages/1463547/Re-difference-between-configSource-and-file-attrib.aspx

【讨论】:

此外,“文件”属性允许您在直接目录树之外指定文件,这对于在不同站点之间共享通用设置很重要。不幸的是,“configsource”属性将您限制在当前树中的文件中,因此对于共享设置,您需要在 IIS 中指定一个虚拟目录。 我上面的评论并不完全正确,我显然错过了编辑它的有点随意的五分钟窗口!您不能在 IIS 中设置虚拟目录以允许“configsource”文件位于直接目录树之外。所以这确实是非常有限的。我通过使用连接点(或 NTFS 硬链接)解决了它,但它并不完全漂亮...... 我想添加到 configSource 列表:It must refer to a file in the same directory or in a subdirectory as the configuration file.。还有文件列表:It can reside outside the directory of the configuration file itself.. 如果对 Save() 的调用将值写入主 .config 文件,但这些值被外部文件中的(旧)值覆盖,那么这种设计如何不被严重破坏?我错过了什么吗? 更新了 appSettings 元素的链接 - docs.microsoft.com/en-us/dotnet/framework/configure-apps/…

以上是关于ASP.NET web.config:configSource 与文件属性的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Web.Config配置收藏

asp.net、url 重写模块和 web.config

asp.net Web.config中assembly注册程序集的目的

asp.net网站 两个文件夹 两个web.config怎么处理

ASP.NET配置文件Web.config 详细解释

授权 Asp.net web.config