加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 无法识别的配置部分

发布时间:2020-12-16 04:00:59 所属栏目:asp.Net 来源:网络整理
导读:我创建了一个自定义配置部分,如下所示 configSections /configSections Tabs Tab name="Dashboard" visibility="true" / Tab name="VirtualMachineRequest" visibility="true" / Tab name="SoftwareRequest" visibility="true" / /Tabs 自定义配置节处理程序
我创建了一个自定义配置部分,如下所示
<configSections>
  </configSections>
  <Tabs>
    <Tab name="Dashboard" visibility="true" />
    <Tab name="VirtualMachineRequest" visibility="true" />
    <Tab name="SoftwareRequest" visibility="true" />
  </Tabs>

自定义配置节处理程序

namespace EDaaS.Web.Helper
    {
        public class CustomConfigurationHandler : ConfigurationSection
        {
            [ConfigurationProperty("visibility",DefaultValue = "true",IsRequired = false)]
            public Boolean Visibility
            {
                get
                {
                    return (Boolean)this["visibility"];
                }
                set
                {
                    this["visibility"] = value;
                }
            }
        }
    }

运行应用程序时抛出异常无法识别的配置部分选项卡.如何解决这个问题

解决方法

您需要编写一个 configuration handler来解析此自定义部分.然后在配置文件中注册此自定义处理程序:
<configSections>
    <section name="mySection" type="MyNamespace.MySection,MyAssembly" />
</configSections>

<mySection>
    <Tabs>
        <Tab name="one" visibility="true"/>
        <Tab name="two" visibility="true"/>
    </Tabs>
</mySection>

现在让我们定义相应的配置部分:

public class MySection : ConfigurationSection
{
    [ConfigurationProperty("Tabs",Options = ConfigurationPropertyOptions.IsRequired)]
    public TabsCollection Tabs
    {
        get
        {
            return (TabsCollection)this["Tabs"];
        }
    }
}

[ConfigurationCollection(typeof(TabElement),AddItemName = "Tab")]
public class TabsCollection : ConfigurationElementCollection
{
    protected override ConfigurationElement CreateNewElement()
    {
        return new TabElement();
    }

    protected override object GetElementKey(ConfigurationElement element)
    {
        if (element == null)
        {
            throw new ArgumentNullException("element");
        }
        return ((TabElement)element).Name;
    }
}

public class TabElement : ConfigurationElement
{
    [ConfigurationProperty("name",IsRequired = true,IsKey = true)]
    public string Name
    {
        get { return (string)base["name"]; }
    }

    [ConfigurationProperty("visibility")]
    public bool Visibility
    {
        get { return (bool)base["visibility"]; }
    }
}

现在您可以访问设置:

var mySection = (MySection)ConfigurationManager.GetSection("mySection");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读