C # web.config Список услуг - PullRequest
0 голосов
/ 27 января 2012

Я хочу сохранить список сервисов (серверов и имен сервисов) в файле web.config.Может быть любое число, и мне нужно иметь возможность сортировать их в порядке остановки / старта.

Конечно, я могу сделать это любым количеством способов, но мне нужно делать это снова и снова, и я ищу самые элегантные решения.

Итак, какие самые элегантные решения для(a) сохранение нескольких элементов с несколькими атрибутами (serviceName, serverName, order) в web.config и(б) сортировка их в указанном порядке

Спасибо за все предложения:)

Ответы [ 3 ]

1 голос
/ 27 января 2012

Создайте пользовательский ConfigurationSection , это позволяет вам определять свой собственный раздел конфигурации, элементы и сортировку в коллекции, как управлять дублирующимися записями и т. Д.

Что-то в одиночку, эти строки:

<section name="myServices" type="MyNameSpace.MyCustomConfigurationSectionHandler, MyAssembly, Version=1.0.0.0, Culture=neutral" restartOnExternalChanges="false" requirePermission="false" />

// I've placed order into the setting in case it is to be persisted or predefined
<myServices>    
  <add serviceName="MyFirstService" serverName="MyService" order="0" />
</myServices>
1 голос
/ 27 января 2012

Сохраните затем в xml-файле и используйте linq to xml для запроса, сортируйте их в соответствии с вашими потребностями

0 голосов
/ 27 января 2012

Обычно в .config у вас просто есть пары ключ / значение в ваших appSettings.Однако, если у вас более двух элементов, вы можете выбрать разделитель для разделения дополнительных элементов в строке значений.Каждый элемент основан на позиции, и вы можете иметь столько значений, разделенных запятыми, сколько захотите.Вы можете использовать любое значение для ключа, и вы всегда можете отсортировать в LINQ.

       <appSettings>
          <add key="order" value="servername, ipaddress, anothervalue"/>
       </appSettings>

       var cfg = ConfigurationManager.AppSettings;

        var servers =
            from key in cfg.AllKeys
            select new {
                order = key,
                servername = cfg[key].Split(',')[0],
                ipaddress = cfg[key].Split(',')[1],
                anothervalue = cfg[key].Split(',')[2]
            };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...