You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

app.config自定义配置段实现遇Unrecognized element 'add'错误求助

问题根源

你遇到的Unrecognized element 'add'错误来源于两处代码疏漏:

  • GroupConfigElement类的Phrases属性未添加[ConfigurationProperty]特性,.NET配置系统无法识别该属性为配置节点的合法子元素
  • 你配置结构中<Group>节点下直接存放<add>元素,没有额外的包裹节点,而原代码中Phrases属性尝试读取键为Groups的子节点,和实际结构不匹配
修复方案

只需要修改GroupConfigElement类的Phrases属性定义,添加特性标记为默认集合即可:

public class GroupConfigElement : ConfigurationElement
{
    [ConfigurationProperty("groupname", IsRequired = true, IsKey = true)]
    public string GroupName
    {
        get { return (string)this["groupname"]; }
        set { this["groupname"] = value; }
    }

    // 新增特性:空字符串对应默认子元素集合,标记为默认集合
    [ConfigurationProperty("", IsDefaultCollection = true)]
    public PhraseCollection Phrases
    {
        // 取值键同步修改为空字符串
        get { return (PhraseCollection) base[""]; } 
    }
}
可选优化

如果后续需要支持<remove>、<clear>等配置操作,可以修改PhraseCollection的集合类型:

[ConfigurationCollection(typeof(PhraseConfigElement), 
    AddItemName = "add", 
    RemoveItemName = "remove", 
    ClearItemsName = "clear", 
    CollectionType = ConfigurationElementCollectionType.AddRemoveClearMap)]
public class PhraseCollection: ConfigurationElementCollection
{
    // 其余代码保持不变
}
验证读取

修复后可以通过以下代码读取配置:

var configSection = (DomainSolutionSection)ConfigurationManager.GetSection("domainSolutionSection");
// 读取Legacy分组下的所有应用名
var legacyApps = configSection.DomainSolutionGroups["Legacy"].Phrases
    .Cast<PhraseConfigElement>()
    .Select(p => p.Name)
    .ToList();

内容的提问来源于stack exchange,提问作者DaveyBoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 13:57:00