来自引用项目的 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 文件以添加sectionGroupsection 元素,如下所示:

  <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,没有它应用程序运行良好。 我什至可以更改&lt;section&gt; 元素中的类型(更改为什至不存在的类型,例如 Foo.Bar),并且一切正常 但如果我删除 &lt;section&gt; 元素,应用程序将无法运行。

我很困惑,有什么帮助吗?

【问题讨论】:

【参考方案1】:

您可能没有使用配置? 如果您不使用它,它只会检查根节点是否通过configSections 注册,但此时不会查看详细信息。

当您实际使用 ConfigurationManager.GetSection 加载它时,将验证设置,在您使用此配置的情况下,它将触发一个异常,提示缺少所需的 YourAge 属性。

【讨论】:

以上是关于来自引用项目的 ASP.NET 自定义配置部分不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

源生成器:有关引用项目的信息?

asp.net 自定义错误页面不起作用

在另一个项目 c# 中使用引用项目的 WCF 服务

VB.NET/ASP.NET 4.0 自定义配置部分:“创建配置部分处理程序时出错”

Qt - 引用项目的 main() 函数覆盖实际项目的 main()

自定义 ASP.NET 配置部分