【问题标题】:Does the appsettings file attribute override what is in the app.config?appsettings 文件属性是否覆盖 app.config 中的内容?
【发布时间】:2012-02-17 21:28:52
【问题描述】:

app.config 中的 appsettings 标签有一个文件属性:

<appSettings file="other.config">
..
..
</appSettings>

这是如何工作的?它会将 appSettings(原始)中的内容与 other.config 文件合并吗?还是会覆盖它?如果 other.config 文件不存在,它应该崩溃吗?

我自己在尝试,如果密钥不在原始文件中,它似乎没有从 other.config 中读取它?

other.config 文件应该只有 xml 节点,还是应该都在 appsettings 元素内?

<appSettings>
  <userId>123</userId>
</appSettings>

<userId>123</userId>

【问题讨论】:

    标签: c# asp.net visual-studio web-config


    【解决方案1】:
    • 如果文件不存在,它不会崩溃,只会被忽略。
    • 外部配置必须包含 &lt;appSettings&gt; 节点,因此您的第一个示例是正确的。
    • 外部文件中的值优先,如果没有值,则使用 app.config 值。

    这是否涵盖了所有内容?

    【讨论】:

    • 所以在 winforms 应用程序中,我将如何引用它? file=/bin/debug/other.config?
    • 它实际上是在做相反的事情,如果元素在外部配置文件中,即使app.config中有相同的元素,它也会使用它
    • 这就是@DoctorMick 所说的:外部文件中的值优先。只有在外部配置文件中没有覆盖值时,才会使用您在 Web.config 本身中指定的值。
    • 这个答案是正确的,但我被抛出一个循环。 IIS Express 不会检测到对外部文件的更改,因此您的应用不会自动重新启动。检测到 Web.config 更改。这可能会让您误以为您的外部覆盖没有被拾取。它们是,但仅当您更改 web.config 或重建时!
    • 您可以连接多个外部文件还是仅限于一个?
    【解决方案2】:

    关于该主题的最佳答案之一在这里:ASP.NET web.config: configSource vs. file attributes - 感谢@Massimiliano Peluso

    file属性

    configSource属性

    file 属性指定包含自定义设置的外部文件,就像您在 web.config 文件的 appSettings 条目中所做的那样。 同时,configSource 属性中指定的外部文件包含您为其声明 configSource 的部分的设置。例如,如果您使用 pages 部分的 configSource 属性,则外部文件将包含 pages 部分的设置。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 2021-01-19
      • 2013-08-16
      • 1970-01-01
      相关资源
      最近更新 更多