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

时间:2015-04-08 11:44:45

标签: c# configuration appsettings configuration-management

我有一些非常奇怪的事情。 我正在使用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>

有什么想法吗?

先谢谢你

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

Ar Thomas Levesque指出 - 您从父母那里获得了继承的价值。在你的机器上配置。有时你真的不想要它发生。因此,您可以使用<clear\>元素:

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

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