6

我正在尝试基于 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。

这个Stackoverflow 答案建议我应该使用

Configuration config = 
    ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
AppSettingsSection customSettingSection = 
    (AppSettingsSection)config.GetSection("customConfiguration");

这行得通。我的问题是:ConfigurationManager.GetSection() 和 Configuration.GetSection() 有什么区别?我什么时候应该使用一个,什么时候应该使用另一个?

4

1 回答 1

6

根据配置类http://msdn.microsoft.com/en-us/library/system.configuration.configuration.aspx上的 MSDN 文档,

如果您的应用程序需要对其自己的配置进行只读访问,建议您对 Web 应用程序使用GetSection方法重载。对于客户端应用程序,请使用GetSection方法。

这些方法提供对当前应用程序的缓存配置值的访问,其性能比 Configuration 类更好。

具体地,在客户端应用中,ConfigurationManager获取应用配置文件、本地用户配置文件和漫游配置文件合并得到的配置文件。

于 2013-07-22T09:20:43.177 回答