ASP.NET web.config: атрибути configSource проти файлів


187

У межах web.config-файла в ASP.NET-додатку деякі розділи конфігурації, такі як 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-bet between-configSource-and-file-attrib.aspx


10
Також атрибут "file" дозволяє вказувати файли поза деревом безпосереднього каталогу, що важливо для обміну загальними налаштуваннями між різними сайтами. На жаль, атрибут "configsource" обмежує вас у файлах у поточному дереві, тому для спільних налаштувань потрібно вказати віртуальний каталог у IIS.
Ед Грем

6
Мій вище коментар був не зовсім правильним, і я, мабуть, пропустив дещо довільне п’ятихвилинне вікно, щоб відредагувати його! Ви не можете встановити віртуальний каталог у IIS, щоб дозволити файлам "configsource" жити поза деревом безпосереднього каталогу. Так що це насправді досить обмежує. Я вирішив це за допомогою точки з'єднання (або жорсткого посилання NTFS), але це не зовсім красиво ...
Ед Грем

1
ВАО! Великий відповідь ... це дійсно допомогло мені: 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..
франкхоммери

2
Оновлене посилання на елемент appSettings
Jarrod
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.