Настраиваемая настраиваемая конфигурация для приложения ASP.NET Core, размещенного в службе приложений Azure. - PullRequest
0 голосов
/ 04 июля 2018

Мне нужно предоставить несколько простых параметров конфигурации для моего сайта, которые легко изменить, не требуя перекомпиляции или перезапуска приложения. Я также хотел бы, чтобы параметры кэшировались в приложении, но они должны обновляться при изменении конфигурации (или, по крайней мере, каждые несколько минут). Мой веб-сайт представляет собой приложение ASP.NET Core MVC, которое работает в службе приложений Azure и развертывается путем отправки в репозиторий git, а затем перестраивается с помощью Kudu.

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

Я заметил, что у провайдера конфигурации JSON есть опция "reloadOnChange", так что это хороший вариант. Однако я не уверен, куда мне поместить файл JSON в среду службы приложений Azure, чтобы он был легко читаемым приложением, общим для всех экземпляров и постоянным для развертываний. Я знаю, что папка "d: \ home" является общей и постоянной. Файл wwwroot находится внутри него, но я боюсь, что файл может быть удален в какой-то момент при повторном развертывании приложения. Поэтому я хотел бы поместить его в одну из родительских папок, но как мне получить доступ к домашней папке из кода C #? Я предполагаю, что я не должен просто жестко закодировать путь "d: \ home".

Я также очень хочу услышать о любых альтернативных способах достижения цели.

1 Ответ

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

На самом деле, вам не нужно беспокоиться, что он удалит файл appsetting.json при повторном развертывании. Если вы измените свои настройки, он переопределит файл json.

var configuration = new ConfigurationBuilder()
           .SetBasePath(System.IO.Directory.GetCurrentDirectory())
           .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
           .AddEnvironmentVariables()
           .Build();

Примечание : при публикации приложения не забывайте не нажимать"Remove additional files at destination".

Также, если вы хотите установить appsetting.json в домашней папке, вы можете использовать Environment.GetEnvironmentVariable("Home");, что равно "D: \ home".

И если вы установите это так, вам нужно установить ASPNETCORE_ENVIRONMENT на , чтобы отличить вашу среду от лазурной или локальной .

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