1

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

<songPoem song=”lalala” />

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

虽然以下工作正常:

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

<songPoem song=”lalala” />

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

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

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

2)我假设元素内只允许歌曲属性<songPoem>,因此我希望.Net能够注意到自定义部分元素是否包含任何不存在的属性。但由于某种原因,我也能够包含其他属性,即使它们没有映射到A类的任何属性:

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

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

4

3 回答 3

2

不久前,我写了一篇关于自定义配置部分的博文,以澄清我自己对它们的困惑。这应该给你一些指导来帮助你把它整理出来:

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

于 2009-07-22T19:03:22.897 回答
1

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

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

从来没有任何问题。当我犯了和你一样的错误并且无法理解问题所在时,这真的让我发疯了。

于 2009-07-22T19:59:47.150 回答
0

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

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

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

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

于 2009-07-22T18:59:49.173 回答