【发布时间】:2012-12-01 11:27:25
【问题描述】:
我在 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" />
我仍然遇到同样的异常。
【问题讨论】:
-
您的会员提供者部分在 Web.config 中的实际外观如何?
-
我还没有包含一个。一个部分可以是可选的吗?也就是说,我可以在 web.config 中拥有该部分的声明而不是实际的部分本身吗?
-
该部分可以是可选的。您可以将 ConfigurationProperty 属性添加到配置部分或 IsRequired 设置为 false 的元素:
[ConfigurationProperty("elementName", IsRequired = false)] -
谢谢。照这样说,我并没有做错什么。但是,我现在仍然包含该部分。我已经更新了原来的问题。
标签: c# configuration web-config app-config configuration-files