簡體   English   中英

無法為web.config創建自定義部分

[英]Unable to create a custom section for web.config

我在web.config文件中創建了一個自定義部分,但是它無法加載要管理該部分的自定義類型。

以下是定義:

<configSections>
<section
        name="MembershipProviders"
        type="MyApp.BusinessObjects.MembershipProviderFactory.MembershipProvidersSection"
        allowLocation="true"
        allowDefinition="Everywhere"
      />
</configSections>


namespace MyApp.BusinessObjects
{
    public class MembershipProviderFactory
    {
        internal virtual IMembershipProvider Create()
        {
        }

        public class MembershipProvidersSection : ConfigurationSection
        {
            public class AddElement: ConfigurationElement
            {
                [ConfigurationProperty("name", IsKey  = true, IsRequired = true)]
                public string Name
                {
                    get
                    {
                        return this["name"].ToString();
                    }
                    set
                    {
                        this["name"] = value;
                    }
                }

                [ConfigurationProperty("type", IsRequired = true)]
                public string FullyQualifiedTypeName
                {
                    get
                    {
                        return this["type"].ToString();
                    }
                    set
                    {
                        this["type"] = value;
                    }
                }
            }

            public class AddElementCollection : ConfigurationElementCollection
            {
                protected override ConfigurationElement CreateNewElement()
                {
                    return new AddElement();
                }

                protected override object GetElementKey(ConfigurationElement element)
                {
                    return ((AddElement)element).Name;
                }
            }


            [ConfigurationProperty("currentProvider", IsRequired = false)]
            public string CurrentProvider
            {
                get
                {
                    return this["currentProvider"].ToString();
                }
                set
                {
                    this["currentProvider"] = value;
                }
            }

            [ConfigurationProperty("add", IsRequired = true, IsDefaultCollection = true)]
            public AddElementCollection Instances
            {
                get { return (AddElementCollection)this["add"]; }
                set { this["add"] = value; }
            }
        }
    }
}

我收到一個運行時異常消息:

為MembershipProviders創建配置節處理程序時發生錯誤:無法加載類型'MyApp.BusinessObjects.MembershipProviderFactory.MembershipProvidersSection'。

更新資料

我還將實際部分包含在配置文件中,如下所示:

<MembershipProviders currentProvider ="DefaultMembershipProvider" />

我仍然得到同樣的例外。

您需要將程序集名稱指定為type屬性的一部分:

<section
    name="MembershipProviders"
    type="Namespace.TheCustomSection, TheAssemblyNameGoesHere"
    allowLocation="true"
    allowDefinition="Everywhere"
/>

編輯
我沒有注意到MembershipProvidersSection類是一個嵌套類。
類型名稱應為:

MyApp.BusinessObjects.MembershipProviderFactory+MembershipProvidersSection

您在聲明類型的地方缺少程序集名稱:

MyApp.BusinessObjects.MembershipProviderFactory.MembershipProvidersSection,?

看看我有關自定義配置的文章之一: C#WCF System.Configuration.ConfigurationErrorsException:無法識別的元素“ ManagedService”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM