如何阅读配置节
本文关键字:配置 何阅读 | 更新日期: 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.SectionInformation
的SectionInformation.IsDeclared
或ConfigSource
的值来查找该部分实际上在您的配置文件中声明,或者从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")