Несколько идентичных настраиваемых конфигураций в app.config

Я пытаюсь создать настраиваемый раздел конфигурации в файле app.config моего консольного приложения C # .NET. Он предназначен для хранения некоторых деталей о некоторых серверах, например:

<configSections>
  <sectionGroup name="serverGroup">
    <section name="server" type="RPInstaller.ServerConfig" allowLocation="true" allowDefinition="Everywhere"/>
  </sectionGroup>
</configSections>
<serverGroup>
  <server>
    <name>rmso2srvm</name>
    <isBatchServer>false</isBatchServer>
  </server>
  <server>
    <name>rmsb2srvm</name>
    <isBatchServer>true</isBatchServer>
  </server>
</serverGroup>

У меня есть класс, определенный для раздела сервера, например:

namespace RPInstaller
{
    public class ServerConfig : ConfigurationSection
    {
        [ConfigurationProperty("name", IsRequired=true)]
        public string Name {...}

        [ConfigurationProperty("isBatchServer", IsRequired = true)]
        public bool IsBatchServer {...}
    }
}

Когда я сейчас пытаюсь загрузить разделы сервера, я получаю исключение: «Разделы должны появляться только один раз в файле конфигурации».

Как я могу юридически определить несколько разделов сервера в моем файле app.config?


person A. Murray    schedule 24.05.2011    source источник


Ответы (2)


<confgisections>
    <section name="server" type="RPInstaller.ServerConfig" allowLocation="true" allowDefinition="Everywhere"/>
</confgisections>
<server>
  <servers>
    </clear>
    <add name="rmso2srvm" isBatchServer="false"/>
    <add name="rmsb2srvm" isBatchServer="true"/>
  </servers>
</server>

Как я ранее настраивал настраиваемый раздел

Код VB для доступа:

 Dim cfg As ServerSection = (ConfigurationManager.GetSection("Server"),ServerSection)
 cfg.ServersCollection("nameOfServer").isBatchServer
person Matt    schedule 24.05.2011
comment
Настоящий ответ - смесь этого и оставленного VMAtm. Мне очень помогли ссылки в ответе на следующий вопрос: Пользовательские разделы конфигурации - person A. Murray; 25.05.2011

Вы не можете создать несколько разделов сервера в одном файле web.config. Только несколько элементов в ваших настраиваемых разделах. Проверьте свой web.config - похоже, что ошибка вызвана не вашим кодом.


Обновление: вы не определили элемент для своего «серверного» элемента - только для ConfigurationSection. Таким образом, среда выполнения ожидает раздела вроде rmso2srvm false

Вы должны добавить класс ServerElement : ConfigurationElement и добавить его к определению вашего класса раздела:

namespace RPInstaller
{
  public class ServerConfig : ConfigurationSection 
  {
    public class ServerElement : ConfigurationElement
    {
        [ConfigurationProperty("name", IsRequired=true)]
        public string Name {...}
        [ConfigurationProperty("isBatchServer", IsRequired = true)]
        public bool IsBatchServer {...}  
    }
  }
}

Дополнительная информация здесь: http://msdn.microsoft.com/en-us/library/2tw134k3.aspx

person VMAtm    schedule 24.05.2011