阅读 appSettings 时,我无处获得密钥计数器

When reading appSettings, I get key Counter from nowhere

我有一件很奇怪的事。 我正在使用 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>

有什么想法吗?

先谢谢你

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

A​​r Thomas Levesque 指出 - 您从机器上的 'parent' 配置中获取继承值。有时你真的不希望它发生。所以你可以使用 <clear\> 元素:

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

这将阻止 <appSettings> 集合的任何自动继承。