阅读 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 文件中定义的。
Ar Thomas Levesque 指出 - 您从机器上的 'parent' 配置中获取继承值。有时你真的不希望它发生。所以你可以使用 <clear\>
元素:
<appSettings>
<clear/>
<add key="test" value="23"/>
</appSettings>
这将阻止 <appSettings>
集合的任何自动继承。
我有一件很奇怪的事。 我正在使用 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 文件中定义的。
Ar Thomas Levesque 指出 - 您从机器上的 'parent' 配置中获取继承值。有时你真的不希望它发生。所以你可以使用 <clear\>
元素:
<appSettings>
<clear/>
<add key="test" value="23"/>
</appSettings>
这将阻止 <appSettings>
集合的任何自动继承。