来自引用项目的 ASP.NET 自定义配置部分不起作用?
Posted
技术标签:
【中文标题】来自引用项目的 ASP.NET 自定义配置部分不起作用?【英文标题】:ASP.NET Custom ConfigurationSection from referenced project not working? 【发布时间】:2011-05-21 15:57:59 【问题描述】:我创建了一个继承自System.Configuration.ConfigurationSection
的自定义类,实现方式如下(这显然只是为了让真正的配置运行):
public class Config : ConfigurationSection
[ConfigurationProperty("quoteOfTheDay", DefaultValue = "It is what it is.", IsRequired = false)]
public string QuoteOfTheDay
get
return this["quoteOfTheDay"] as string;
[ConfigurationProperty("yourAge", IsRequired = true)]
public int YourAge
get
return (int)this["yourAge"];
类的完整命名空间 + 名称是 MyApp.Core.Config,它位于编译为 MyApp.Core.dll 程序集的 MyApp.Core 项目中。然后,我从名为 MyApp.UI 的 ASP.NET/MVC3 项目中引用了这个项目。我编辑了Web.config
文件以添加sectionGroup
和section
元素,如下所示:
<configSections>
<sectionGroup name="myAppConfigGroup">
<section name="myAppSection"
type="MyApp.Core.Config, MyApp.Core, Version=1.0.0.0, Culture=neutral, PublicKey=null"
allowLocation="true"
allowDefinition="Everywhere" />
</sectionGroup>
</configSections>
<myAppConfigGroup>
<myAppSection>
</myAppSection>
</myAppConfigGroup>
但是,MyApp.Core.Config
类型似乎不习惯用于验证配置或在我编辑配置时提供智能感知。以下是我的一些观察:
yourAge
属性定义为IsRequired = true
,没有它应用程序运行良好。
我什至可以更改<section>
元素中的类型(更改为什至不存在的类型,例如 Foo.Bar),并且一切正常
但如果我删除 <section>
元素,应用程序将无法运行。
我很困惑,有什么帮助吗?
【问题讨论】:
【参考方案1】:您可能没有使用配置?
如果您不使用它,它只会检查根节点是否通过configSections
注册,但此时不会查看详细信息。
当您实际使用 ConfigurationManager.GetSection
加载它时,将验证设置,在您使用此配置的情况下,它将触发一个异常,提示缺少所需的 YourAge
属性。
【讨论】:
以上是关于来自引用项目的 ASP.NET 自定义配置部分不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
VB.NET/ASP.NET 4.0 自定义配置部分:“创建配置部分处理程序时出错”