Как получить доступ к дополнительным параметрам в App.config? - PullRequest
2 голосов
/ 04 июля 2011

По сути, с App.config и Web.config легко работать, когда речь идет о строках соединения и парах ключ-значение конфигурации.

Но как получить доступ к дополнительным разделам этих двух файлов?

Единственный способ найти подразумевает, что необходимо создать configuration/configSections/section, чтобы иметь возможность добавлять дополнительные настройки в файлы конфигурации. Это неверно, поскольку некоторые компоненты .NET фактически получают доступ к пользовательским настройкам без использования configuration/configSections/section. Например, при работе с настройками диагностики у меня может быть раздел:

<system.diagnostics>
  <trace autoflush="true"/>
  <sources>
    <source name="Samples">
      <listeners>
        <add name="ConsoleListener" type="System.Diagnostics.ConsoleTraceListener"/>
      </listeners>
    </source>
  </sources>
</system.diagnostics>

без необходимости добавлять какие-либо configSection в файл.

Как сделать то же самое в моем собственном коде?

Ответы [ 3 ]

1 голос
/ 04 июля 2011

Комментарий @Vladislav охватывает это.Раздел config должен быть всегда определен, но не обязательно в файле конфигурации web / app, потому что файлы конфигурации имеют иерархию.Поэтому стандартные разделы определены в стандартном файле machine.config.

Если вам нужны разделы, которые доступны для нескольких приложений, вы можете изменить файл machine.config и указать их там.Однако это не то, что вы должны делать в 99,99% случаев программирования.И все, что он делает, это скрывает подробности раздела от разработчика.

Имейте в виду, что если бы вы сделали это, вам пришлось бы предоставить dll, которая определяет этот раздел, для всех компьютеров и поддерживать его в актуальном состоянии.какое бы приложение не внесло изменения.Это требует значительных затрат на техническое обслуживание, поэтому вы должны быть абсолютно уверены, что это принесло реальную пользу.

Простой ответ на ваш вопрос: да, вы можете это сделать, но никогда не должны,Очень редко это неправильно.

1 голос
/ 04 июля 2011

Упомянутый вами раздел не является неопределенным, он определен в файле конфигурации компьютера (который является глобальным для .NET). Если вам нужны пользовательские разделы, вам нужно определить их в начале файла и определить классы, которые их представляют, поэтому .NET знает, как обрабатывать соответствующие объекты.

Если вам нужен только доступ к некоторым настройкам без получения объектов и всего, вы можете определить раздел, используя только ConfigSectionHandler, а затем получить прямой доступ к XML-документу, например this (в конце концов, конфигурация это просто еще один XML-файл).

Я бы настоятельно рекомендовал , а не , идти прямым путем и вместо этого использовать обычный путь, то есть это руководство . Это избавит вас от проблем, проверив все и сделав его легко доступным из кода. Первоначально это PITA, но оно того стоит.

0 голосов
/ 04 июля 2011

Вы можете определить свои собственные разделы в своем app / web.config, отметьте этот замечательный учебник .

...