我正在研究一个控制台程序,它应该从我定义的app.config中找到一个sectiongroup,并在foreach循环中获取每个部分键。 这是我的app.config:
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<appSettings>
</appSettings>
<configSections>
<sectionGroup name="JobCheckerConfigGroup">
<section name="TheJob" type="System.Configuration.NameValueSectionHandler"/>
<section name="TheOtherJob" type="System.Configuration.NameValueSectionHandler"/>
</sectionGroup>
</configSections>
<JobCheckerConfigGroup>
<TheJob>
<add key="Path" value="PathToTheJob" />
<add key="JobName" value="TheJob" />
</TheJob>
<TheOtherJob>
<add key="Path" value="*PathToTheOtherJob" />
<add key="JobName" value="TheOtherJob" />
</TheOtherJob>
</JobCheckerConfigGroup>
</configuration>
这是C#代码:
static void Main(string[] args)
{
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConfigurationSectionGroupCollection sectionGroups = config.SectionGroups;
if (sectionGroups["JobCheckerConfigGroup"] != null)
{
foreach (ConfigurationSection mySection in sectionGroups["JobCheckerConfigGroup"].Sections)
{
NameValueCollection db = (NameValueCollection)ConfigurationManager.GetSection("JobCheckerConfigGroup/" + mySection.SectionInformation.Name);
//ConfigurationSettings.GetConfig("JobCheckerConfigGroup/" + mySection.SectionInformation.Name);
}
}
}
这段代码以第一个“if”结尾,但有一个例外,即:“参数sectionGroupName不存在”
我试过的另一种方式:
foreach (ConfigurationSectionGroup sectionGroup in sectionGroups)
{
if (sectionGroup.Name == "JobCheckerConfigGroup")
{
foreach (ConfigurationSection configSection in sectionGroup.Sections)
{
var section = ConfigurationManager.GetSection(configSection.SectionInformation.SectionName) as NameValueCollection;
myPath = section["Path"];
}
}
}
在这段代码中,程序找到了十个其他的sectiongroups而不是我的“JobCheckerConfigGroup” 我试着遵循这条指令:How do you use sections in c# 4.0 app.config?但我无法让它为我工作。 有人有解决方案吗? 感谢。