1

1) Если (внутри web.config файла) Я объявляю пользовательский раздел с именем songPoem до того <configSection>, сообщают об ошибке говоря songPoem элемента не распознаются. Таким образом, следующее дает мне ошибку:Есть .Net чтение web.config сверху вниз?

<songPoem song=”lalala” /> 

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

во время следующих работ просто отлично:

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

<songPoem song=”lalala” /> 

А) я предполагаю, ошибка происходит из-за Нетто чтение web.config сверху вниз ?! Если да, то является ли порядок объявления элемента проблемой только тогда, когда речь идет о пользовательских элементах раздела или ...?

BTW - вот определение класса А:

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

2) Я хотел бы предположить, что только песня атрибут будет разрешено внутри <songPoem> элемента, и, таким образом, я бы ожидать, что .Net сможет обратите внимание, если элемент пользовательского раздела содержит любые несуществующие атрибуты. Но по какой-то причине я был в состоянии включать другие атрибуты также, даже если они не отображаются на любое свойство класса :

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

Любая идея, почему Net не заметил, что songPoem содержит недействительный атрибут?

ответ

0

ну, он использует xmlreader для чтения данных, поэтому я бы предположил, что он читает сверху вниз и обрабатывает найденные им элементы по порядку.

Хотя я подозреваю, что это сделать двойной проход для поддержки таких вопросов. Наверное, это не так.

Кроме того, я всегда видел стандартную практику объявления разделов конфигурации сверху, возможно, именно поэтому.

Технически порядок имеет значение, так как, как и при десериализации, я ожидал бы, что объекты в списке будут десериализованы в том же порядке, в котором они были определены.

+0

Это общее количество BS – Janie

+0

, почему вы так говорите? –

2

Я сделал довольно обширное сообщение в блоге по пользовательским разделам конфигурации, а затем прояснил свое собственное замешательство. Это должно дать вам несколько советов, которые помогут вам получить его разобрали:

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

+0

Я проверил вашу ссылку, но не смог найти ничего, что могло бы объяснить, с какими элементами важна процедура объявления. Я также не мог найти никаких объяснений, почему Net не замечает ненужные атрибуты – SourceC

1

Я всегда имею установку мой web.config следующим образом:

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

Никогда не было никаких проблем. Это по-настоящему сделало меня сумасшедшим, когда я совершил ту же ошибку, что и вы, и не мог понять, в чем проблема.