得意犹堪夸世俗,诏黄新湿字如鸦。这篇文章主要讲述appsettings文件属性是否覆盖了app.config中的内容?相关的知识,希望能为你提供帮助。
app.config中的appsettings标记具有文件属性:
<
appSettings file="other.config">
..
..
<
/appSettings>
这是如何运作的?它会将appSettings(原始)中的内容与other.config文件合并吗?或者它会覆盖它吗?如果other.config文件不存在,该怎么办呢?
我自己尝试,如果一个键不在原来的,它似乎不是从other.config读取它?
other.config文件应该只有xml节点,还是应该都在appsettings元素中?
<
appSettings>
<
userId>
123<
/userId>
<
/appSettings>
【appsettings文件属性是否覆盖了app.config中的内容()】要么
<
userId>
123<
/userId>
答案
- 如果文件不存在则不会崩溃,只会被忽略。
- 外部配置必须包含
< appSettings>
节点,因此您的第一个示例是正确的。 - 外部文件中的值将优先,如果不存在任何值,则使用app.config值。
另一答案关于这个问题的最佳答案之一是:ASP.NET web.config: configSource vs. file attributes- 来自@Massimiliano Peluso
file
属性- 指定包含自定义应用程序配置设置的外部文件的相对路径
- 具体到
appSettings
部分 - 将合并(和覆盖).config文件中的设置
- 修改指定的文件时不会导致Web应用程序重新启动
- http://msdn.microsoft.com/en-US/library/ms228154(v=vs.100).aspx
- 使用Configuration.AppSettings.Settings.Add API将导致所有设置在
.config
.Configuration调用中合并回主Save。 - 从.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将导致在
configSource
.Configuration调用中将所有设置添加到Save中指定的文件中。 - 从.NET 2.0开始
- 如果配置源文件不存在,则抛出
System.Configuration.ConfigurationErrorsException
。
file
属性指定包含自定义设置的外部文件,就像在web.config文件的appSettings条目中一样。同时,configSource
属性中指定的外部文件包含您声明configSource的部分的设置。例如,如果使用pages部分的configSource属性,则外部文件将包含pages部分的设置。在file属性中指定的外部配置中声明的自定义设置将与web.config文件中appSettings部分中的设置合并。同时,configSource不支持合并,这意味着您必须将整个部分设置移动到外部文件中。http://www.codeproject.com/Messages/1463547/Re-difference-between-configSource-and-file-attrib.aspx
推荐阅读
- web.config与.dll中的app.config
- C#/ ASP.Net(app.settings而不是web.config)
- 使用Azure Web App上的web.config将子域重写到目录
- 如何使用devexpress加速treeview appendnode
- Android Treeview
- 前100万个网站的安全性,性能和WordPress分析
- 初学者网络安全基础知识简介
- 适用于初学者的SSL/TLS教程
- 如何在Apache Tomcat中实现SSL()