我有一些非常奇怪的事情。 我正在使用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>
有什么想法吗?
先谢谢你
答案 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>
集合的任何自动继承。