Общие файлы конфигурации в .NET - PullRequest
8 голосов
/ 04 мая 2009

У меня есть решение, которое включает как веб-приложение, так и приложение-службу Windows NT. Это, конечно, два разных проекта, но в рамках одного решения. Тем не менее, они имеют одну и ту же конфигурацию.

В настоящее время у меня одинаковые значения как в файле web.config, так и в файле app.config. Это начинает сбиваться с толку, и я хотел бы иметь общие файлы конфигурации для обоих приложений в решении.

  • Есть ли проблема в сети? приложение, если конфигурация не на корневом уровне Интернета приложение? Есть ли здесь ограничения?
  • Потеряю ли я кеширование и автоматическая переработка сети приложение, если я не использую web.config
  • Является ли вообще плохой идеей разделять конфигурацию, как описано?

Ответы [ 2 ]

9 голосов
/ 04 мая 2009

Что ж, вы можете «вывести» определенные части конфигурации в отдельные файлы .config и использовать их из обоих мест.

например. Вы можете настроить параметры строки подключения следующим образом:

<connectionStrings configSource="connectionStrings.config" />

и затем создайте файл «connectionString.config» следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<connectionStrings>
  <add name="ConfigurationDatabase" 
       connectionString="server=.;Integrated Security=true;database=test"/>
  <add name="TestDatabase" 
       connectionString="server=TEST;Integrated Security=true;database=test"/>
</connectionStrings>

По сути, любой ConfigurationSection имеет такой параметр «configSource», который позволяет вам указать внешний файл для использования.

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

Марк

2 голосов
/ 05 мая 2009

Вам по-прежнему понадобится web .config, так как есть элементы конфигурации, относящиеся к сети, которые не будут присутствовать в app.config вашей службы. Как говорит Марк , использование атрибута ConfigSource позволит вам совместно использовать общие элементы.

Обратите внимание, что элемент appSettings имеет небольшую разницу: атрибут File.

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

Это ведет себя иначе, чем атрибут ConfigSource, поскольку вам не нужно заменять весь раздел внешним файлом, он может просто содержать элементы, которые вы хотите иметь дополнительно, или переопределять значения:

Вы можете использовать атрибут файла, чтобы указать файл конфигурации, который предоставляет дополнительные настройки или переопределяет настройки , указанные в элементе appSettings.

Если вы используете ConfigSource для совместного использования других элементов, то при изменении значений вы все равно будете автоматически перезапускать приложение - однако примечание об атрибуте restartOnExternalChanges должно игнорироваться для приложений ASP.NET использование атрибута File будет означать, что изменения не приведут к перезапуску.

Содержимое внешних файлов должно по-прежнему кэшироваться, поэтому на производительность не должно влиять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...