How to read configSections

假如想象 提交于 2019-12-10 15:25:04

问题


I've set up some custom config sections in my App.Config, such that I now have a configSection that looks like this.

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

What I want to do is to read this section in code in order to find out at runtime what sections I have. I have tried:

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

but this returns null. I'm sure I'm missing something simple, but I cannot find anything about how to do this.

Thanks


回答1:


Use the Configuration.Sections-property to get the names of the declared configuration sections. Then, optionally if you need, use ConfigurationManager.GetSection() to retrieve an individual section.

Note that you may want to use the value of the SectionInformation.IsDeclared or ConfigSource of the respective ConfigurationSection.SectionInformation to find out of the section was actually declared in your configuration file, or is inherited from machine.config or otherwise.

Example:

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

Finally, note that this approach will only get you configuration sections. It will not return configuration sections, which are itself inside a <sectionGroup>. For them, you would first need iterate over Configuration.SectionGroups, which has it's own Sections-property that contains the per section group sections. It can also contain nested section groups, again accessible via the SectionGroups property of each ConfigurationSectionGroup instance.




回答2:


if put all the sections into a section group this would work:

<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")


来源:https://stackoverflow.com/questions/10331844/how-to-read-configsections

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!