我有一些非常奇怪的事情。我正在使用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>
集合的任何自动继承。