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 包含无效属性?
答案 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来读取数据,所以我想它会自上而下读取,并按顺序处理它找到的元素。
虽然我怀疑它会做一个双通来支持这样的问题。我猜它没有。
另外,我总是看到在顶部声明配置部分的标准做法,也许这就是原因。
技术上顺序也很重要,因为就像反序列化一样,我希望列表中的对象按照它们定义的顺序反序列化。