Загрузка app- или web.config из родительского каталога web.config - PullRequest
0 голосов
/ 12 января 2020

Я пишу веб-приложение на C# /. NET, которое я хочу отправить с дополнительными утилитами, документацией и другими материалами. Поэтому я бы предпочел, чтобы структура папок выглядела следующим образом.

C:\Program Files\MyApp\
│   config.yml
│
├───Services
│       WindowsService.exe
│
├───Tools
│       AnotherTool.exe
│       Utility.exe
│
└───Web
        web.config

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

Поскольку некоторым другим инструментам и службам также требуется доступ к файлу конфигурации приложения, я подумал о разбиении web.config в отдельные файлы - в зависимости от их ответственности. Это означает, что я хотел бы, чтобы общая информация о конфигурации хранилась в общем файле, например, config.yml, config.xml или app.config в каталоге root приложения. Затем этот файл содержит информацию о конфигурации, которая необходима во всех частях приложения, тогда как web.config предоставляет только конфигурацию, необходимую для веб-части приложения. Другие инструменты и сервисы теперь могут получать доступ к конфигурации приложения без необходимости загружать конфигурацию веб-части.

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

<MyApp configSource="..\app.config" />

К сожалению, этот не разрешен по соображениям безопасности, я думаю.

Затем я подумал о том, чтобы загрузить файл конфигурации самостоятельно из XML или YML-файла, который связан с web.config. Но это связано с рядом проблем, таких как

  • Нет автоматов c Перезапуск приложения при изменении файла конфигурации
  • Ручные, поточно-ориентированные определения изменений файлов для меня выглядят "грязными", например, с использованием FileSystemWatcher или проверка файла на модификацию при каждом запросе
  • Не используется. NET предусмотренные механизмы по умолчанию

Есть ли лучший способ для создания архитектуры файла конфигурации, подобной этой

...