我正在尝试基于appsettings创建自定义配置文件节:

<configSections>
  <section name="customConfiguration"
           type="System.Configuration.AppSettingsSection,
                 System.Configuration,
                 Version=2.0.0.0, Culture=neutral,
                 PublicKeyToken=b03f5f7f11d50a3a"/>
</configSections>

当我试图通过configurationmanager.getSection(“customconfiguration”)读取它时,返回的对象的类型为system.configuration.keyValueInternalCollection。我无法读取此集合的值,尽管我可以看到密钥,也无法将其强制转换为appsettingssection。
Thisstackoverflow答案建议我使用
Configuration config =
    ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
AppSettingsSection customSettingSection =
    (AppSettingsSection)config.GetSection("customConfiguration");

这奏效了。我的问题是:configurationmanager.getSection()和configuration.getSection()有什么区别?我应该什么时候用一个,什么时候用另一个?

最佳答案

根据配置类http://msdn.microsoft.com/en-us/library/system.configuration.configuration.aspx的msdn文档,
如果应用程序需要对其自身配置进行只读访问,建议对web应用程序使用GetSection方法重载。对于客户端应用程序,请使用GetSection方法。
这些方法提供对当前应用程序的缓存配置值的访问,该应用程序的性能优于配置类。
具体来说,在客户端应用程序中,configurationmanager检索通过合并应用程序配置文件、本地用户配置文件和漫游配置文件而获得的配置文件。

08-05 11:18