【问题标题】:When reading appSettings, I get key Counter from nowhere阅读 appSettings 时,我从无处获得关键计数器
【发布时间】:2015-04-08 11:44:45
【问题描述】:

我有一些很奇怪的事情。 我正在使用 ConfigurationManager 打开配置文件,例如:

ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = path;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);

一切正常,但是当我查看 config.AppSettings.Settings.AllKeys 时,除了其他键之外,我可以看到名为 Counter 的键在我的配置文件中不存在。

在配置文件中:

  <appSettings>
    <add key="test" value="23"/>
  </appSettings>

有什么想法吗?

谢谢你

【问题讨论】:

    标签: c# configuration appsettings configuration-management


    【解决方案1】:

    .NET 配置系统使用继承机制。某些设置在机器级配置文件 (&lt;.NET Framework directory&gt;\machine.config) 中定义,每个应用程序特定的配置文件都可以覆盖机器级设置。在您的情况下,我认为 Counter 设置是在 machine.config 文件中定义的。

    【讨论】:

    • 另请注意,如果您使用的是 x64 Windows,则 machine.config 有两个版本,适用于 x86 和 x64 版本。
    • 非常感谢!你的解释很有帮助
    【解决方案2】:

    Ar Thomas Levesque 指出 - 您从机器上的“父”配置中获得继承值。有时你真的不希望它发生。所以你可以使用&lt;clear\&gt;元素:

    <appSettings>
         <clear/>
         <add key="test" value="23"/>
    </appSettings>
    

    这将阻止&lt;appSettings&gt; 集合的任何自动继承。

    【讨论】:

      猜你喜欢
      • 2012-09-23
      • 2017-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-13
      • 2017-05-27
      相关资源
      最近更新 更多