ASP.NET web.config: configSource и атрибуты файла


187

Внутри web.config-file в ASP.NET-приложении некоторые разделы config, такие как appSettingsи connectionStrings, поддерживают атрибуты fileиconfigSource .

В чем разница между использованием file-attribute и configSource-attribute? Когда вы должны использовать какой атрибут и можете ли вы использовать оба?

<?xml version="1.0"?>
<configuration>
  <appSettings file="AppSettings.config">
  </appSettings>
  <connectionStrings configSource="ConnectionStrings.config">      
  </connectionStrings>
  <!-- ... -->
</configuration>

Ответы:


300

file атрибут

  • Указывает относительный путь к внешнему файлу, который содержит пользовательские параметры конфигурации приложения
  • специфичные для appSettingsраздела
  • будет объединять (и переопределить) настройки в файле .config
  • не приведет к перезапуску веб-приложения при изменении указанного файла
  • http://msdn.microsoft.com/en-US/library/ms228154(v=vs.100).aspx
  • Использование конфигурации . AppSettings . Настройки . Добавление API приведет к тому, что все настройки будут объединены с основными .configв конфигурации . Сохранить звонок.
  • начиная с .NET 1.1
  • Исключение не выдается, если файл не существует.

configSource атрибут

fileАтрибут определяет внешний файл , содержащий пользовательские настройки , как вы делаете в записи AppSettings файла web.config. Между тем внешний файл, указанный в configSourceатрибуте, содержит параметры раздела, для которого вы объявляете configSource. Например, если вы используете configSourceатрибут раздела страниц, то внешний файл будет содержать параметры раздела страниц.

Пользовательские настройки, объявленные во внешнем конфиге, указанном в fileатрибуте, будут объединены с настройками в appSettings разделе в web.configфайле. В то же время, configSource это не поддерживает объединение, это означает , что вам придется переместить весь раздел настройки во внешний файл.

http://www.codeproject.com/Messages/1463547/Re-difference-between-configSource-and-file-attrib.aspx


10
Кроме того, атрибут «file» позволяет указывать файлы вне непосредственного дерева каталогов, что важно для обмена общими настройками между различными сайтами. К сожалению, атрибут «configsource» ограничивает вас файлами в текущем дереве, поэтому для общих настроек вам нужно указать виртуальный каталог в IIS.
Эд Грэм,

6
Мой комментарий выше был не совсем верным, и я явно пропустил несколько произвольное пятиминутное окно для его редактирования! Вы не можете установить виртуальный каталог в IIS, чтобы позволить файлам «configsource» жить вне непосредственного дерева каталогов. Так что это действительно довольно ограниченно. Я решил это с помощью точки соединения (или жесткого соединения NTFS), но это не совсем красиво ...
Эд Грэм,

1
WAO! Отличный ответ ... это действительно помогло мне will not cause web application to restart when modifying the specified file. Мне нужно, чтобы приложение перезагружалось при изменении любого параметра во внешнем файле для пользовательского раздела, поэтому путь можно найти configSource. Интересно то, что я использовал, fileи различные разделы работали. fileтакже работает для других разделов, appSettingsно есть те, которые хорошо объясняются в ответе.
Лениэль Маккаферри

4
Я хотел бы добавить к списку configSource: It must refer to a file in the same directory or in a subdirectory as the configuration file.. А также к списку файлов: It can reside outside the directory of the configuration file itself..
Frankhommers

2
Обновлена ​​ссылка для элемента appSettings - docs.microsoft.com/en-us/dotnet/framework/configure-apps/…
Джаррод
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.