如何阅读配置节

本文关键字:配置 何阅读 | 更新日期: 2023-09-27 18:32:15

我已经在我的App.Config中设置了一些自定义配置部分,这样我现在有一个看起来像这样的配置部分。

<configSections>
    <section name="Section1" type="ConfigSections.MySection, MyNamespace"/>    
    <section name="Section2" type="ConfigSections.MySection, MyNamespace"/>    
    <section name="Section3" type="ConfigSections.MySection, MyNamespace"/>    
</configSections>

我想做的是在代码中阅读本节,以便在运行时找出我有哪些部分。我试过:

var mySections = ConfigurationManager.GetSection("configSections");

但这返回 null。我确定我错过了一些简单的东西,但我找不到任何关于如何做到这一点的信息。

谢谢

如何阅读配置节

使用 Configuration.Sections -属性获取已声明配置节的名称。然后,如果需要,可以选择使用 ConfigurationManager.GetSection() 检索单个部分。

请注意,您可能希望使用相应ConfigurationSection.SectionInformationSectionInformation.IsDeclaredConfigSource的值来查找该部分实际上在您的配置文件中声明,或者从machine.config或其他方式继承。

例:

    var cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    var localSections = cfg.Sections.Cast<ConfigurationSection>()
       .Where(s => s.SectionInformation.IsDeclared);

最后,请注意,此方法只会获取配置部分。它不会返回配置部分,这些配置部分本身位于<sectionGroup>内。对于它们,您首先需要迭代 Configuration.SectionGroups ,它具有自己的 Sections -属性,其中包含每个部分组的部分。它还可以包含嵌套的节组,同样可以通过每个ConfigurationSectionGroup实例的 SectionGroups 属性进行访问。

如果将所有部分放入一个部分组中,这将起作用:

<configSections>
      <sectionGroup name="FMGlobal.Common.SecuritySubsystem.ADAzManFeed">
        <section name="ADFolders" type="System.Configuration.NameValueSectionHandler, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
      </sectionGroup>
    </configSections>
  var  NVC = (ConfigurationManager.GetSection( _
    "FMGlobal.Common.SecuritySubsystem.ADAzManFeed")