在阅读appSettings时,我不知从哪里得到了密钥Counter



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

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

一切都很好,但当我查看配置时。AppSettings.Settings.AllKeys除了其他密钥外,我还可以看到配置文件中不存在的名为Counter的密钥。

在配置文件中:

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

有什么想法吗?

感谢您的高级

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

Ar Thomas Levsque指出,您可以从机器上的"父"配置中获得继承值。有时候你真的不希望它发生。所以你可以使用<clear>元素:

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

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

最新更新