.Net从上到下阅读web.config?

时间:2009-07-22 18:57:28

标签: .net asp.net configuration web-config configuration-files

1)如果(在 web.config 文件中)我在<configSection>之前声明了名为 songPoem 的自定义部分,则会报告错误 songPoem < / em>元素无法识别。因此,以下给出了一个错误:

<songPoem song=”lalala” />

<configSection>
  <section name=”songPoem” type=”A” />
</configSection>

虽然以下工作正常:

<configSection>
  <section name=”songPoem” type=”A” />
</configSection>

<songPoem song=”lalala” />

A)我认为错误是由于.Net从上到下阅读web.config?如果是这样,元素声明的顺序是仅在涉及自定义节元素时才是问题,或者......?

顺便说一句 - 这是A类的定义:

public class A: ConfigurationSection
{
   [ConfigurationProperty(“song”)]
     public string Song{ ... } 
}

2)我假设<songPoem>元素中只允许 song 属性,因此我希望.Net能够注意到自定义section元素是否包含任何非元素现有属性。但由于某些原因,我也能够包含其他属性,即使它们没有映射到类 A 的任何属性:

<songPoem song=”lalala” movie=”this_should_be_here” />

知道为什么Net没有注意到 songPoem 包含无效属性?

3 个答案:

答案 0 :(得分:2)

我做了很多关于自定义配置部分的博客文章,回过头来清理我自己对它们的困惑。这应该给你一些指导,以帮助你解决它:

http://www.endswithsaurus.com/2008/11/custom-configuration-section.html

答案 1 :(得分:1)

我总是这样设置我的web.config:

<configuration>
    <configSections>
        <sectionGroup name="myConfigGroup">
            ....
        </sectionGroup>
    </configSections>
    <myConfigGroup>
        ....
    </myConfigGroup>
</configuration>

从未遇到任何问题。当我犯了与你相同的错误并且无法理解问题是什么时,这真的让我疯了。

答案 2 :(得分:0)

好吧,它使用xmlreader来读取数据,所以我想它会自上而下读取,并按顺序处理它找到的元素。

虽然我怀疑它会做一个双通来支持这样的问题。我猜它没有。

另外,我总是看到在顶部声明配置部分的标准做法,也许这就是原因。

技术上顺序也很重要,因为就像反序列化一样,我希望列表中的对象按照它们定义的顺序反序列化。