Переменные среды для параметров приложения в Службе приложений Azure

У меня есть веб-API в .NET 6, который использует стандарт IConfiguration для получения значений конфигурации/настроек из appsettings.json и развертывается в Службе приложений Azure (Windows). Я развертываю его с помощью Visual Studio и вижу, что код обновляется в Службе приложений. Однако мои изменения в appsettings.json не отразились на вкладке «Настройки приложения» на странице «Переменные среды» (в разделе «Настройки»). Обратите внимание, что внутренняя служба приложений appsettings.json была обновлена ​​(я проверил это с помощью Kudu). Я не знаю, как предыдущий разработчик создал эти переменные среды (по одной для каждого значения в appsettings.json).

  • Это что-то, что мне нужно добавить/обновить вручную?
  • Существует ли инструмент для автоматизации зеркального отображения новых записей в appsettings.json и создания соответствующих переменных среды?
  • Я попытался опубликовать appsettings.json, щелкнув его правой кнопкой мыши в обозревателе решений Visual Studio, а затем щелкнув пункт меню Publishing appsettings.json, но это, похоже, не сработало. Я неправильно использую этот пункт меню?
  • Я вижу, что на странице переменных среды есть кнопка «Извлечь ссылочные значения». Судя по немногим результатам Google, похоже, что это означает получение обновленных значений из Key Vault. Это верно?
  • Впервые я вижу, что переменные среды используются вместо настроек, которые уже определены в appsettings.json. Я знаю, что для некоторых настроек (например, конфиденциальных значений, таких как токены/ключи API) это может быть способом избежать хранения этих значений на диске, но в этом проекте каждая настройка дублируется. Это обычное/стандартное действие? Обычно я просто копирую/развертываю все appsettings.<env name>.json для каждой среды и просто устанавливаю переменную ASPNETCORE_ENVIRONMENT в соответствии с <env name>.

Ответы на любые/все вопросы выше будут оценены по достоинству, я прочитал несколько страниц документации Службы приложений Azure и ни разу не упомянул об инструменте/способе автоматизации создания переменных env, как в этом проекте. Хочется думать, что предыдущий разработчик не был настолько сумасшедшим, чтобы вручную создавать/обновлять каждый из них.

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
341
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Конфигурация, заданная в appsettings.json, не будет добавлена/видна в разделе «Переменные среды» Службы приложений.

  • Вы можете увидеть значение файла appsettings.json только в папке KUDU => site/wwwroot.

Я не знаю, как предыдущий разработчик создал эти переменные среды.

  • Один из способов — добавить вручную в настройках приложения и подключения переменных среды.

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

appsettings.json в Местном:

  "SampleConfig": "Value from Development appsettings.json"
  • Если вы хотите продолжить использование существующих настроек, вы можете напрямую получить значения из IConfiguration.
 private readonly ILogger<WeatherForecastController> _logger;
 private readonly IConfiguration myconfig;
 public WeatherForecastController(ILogger<WeatherForecastController> logger,IConfiguration config)
 {
     _logger = logger;
     myconfig = config;
 }
var mysetting= myconfig["SampleConfig"];

Вывод моего приложения со значениями из appsettings.json:

Существует ли инструмент для автоматизации зеркального отображения новых записей в appsettings.json и создания соответствующих переменных среды?

  • Если вам нужно добавить дополнительные настройки или вы не хотите добавлять их вручную, вы можете установить их с помощью команды Azure CLI.

Я следил за этим MSDoc для команд CLI.

  • Откройте командную строку локально, перейдите в корневую папку приложения и войдите в Azure CLI.
az login
  • Вы можете добавить настройки напрямую, как показано ниже.
az webapp config appsettings set --name AppSettings6June --resource-group YourRGName --settings "SampleConfig=Value from Deployed Azure App Service" "Name=Harshitha" "Title=Azure App Service"

ИЛИ

  • Можно установить значения в файле json (создать новый файл или отредактировать существующий appsettings.json) и запустить приведенную ниже команду.
az webapp config appsettings set --name AppSettings6June --resource-group YourRGName --settings "@appsettings.json"

Мой appsettings.json:

{
  "SampleConfig": "Value from Deployed Azure App Service",
  "Name": "Harshitha",
  "Title": "Azure App Service"
}

  • Если вы запустите одну и ту же команду несколько раз, существующие ключи будут обновлены и будут добавлены новые ключи.

Переменные среды Azure:

Вывод службы приложений:

Я вижу, что на странице переменных среды есть кнопка «Извлечь ссылочные значения». Судя по немногим результатам Google, похоже, что это означает получение обновленных значений из Key Vault. Это верно?

  • Этот параметр используется, когда вы устанавливаете значения KeyVault в настройках службы приложений в качестве ссылки на Key Vault.

Для получения более подробной информации обратитесь к этому MSDoc и моему SOThread.

Напомним, что команда CLI для получения настроек из файла и добавления/редактирования их в службу приложений является наиболее близкой к инструменту «синхронизации», но не совсем, поскольку она не может определить, когда следует удалить переменную env. Еще хуже, если, как в моем случае в этом проекте, источником истины будут считаться переменные окружения Azure. Мне нужен инструмент, который сделает обратное, и бонусные баллы, если он сможет показать разницу между Azure и файлом.

Eric 07.06.2024 15:16

Вы ищете что-нибудь еще?

Harshitha 07.06.2024 15:18

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

Harshitha 07.06.2024 15:22

Другие вопросы по теме

Попытка использовать WEBSITE_RUN_FROM_PACKAGE = 1, но ZipDeploy не удалось с [IOException]: имя пользователя или пароль неверны
Отключите TipMix и файл cookie x-ms-routing-name с веб-сайта
Как развернуть приложениеstreamlit в веб-приложении Azure
Почему PWA на основе реагирования, размещенное в моей службе приложений Azure, случайно начинает возвращать ошибку 500 для ВСЕХ вызовов POST (GET работает нормально)? Исправлено: Перезапустить браузер?
Центр развертывания службы приложений Azure — что делает «Отключение» и как «повторно подключиться»?
План службы приложений Azure потребляет 70 % памяти без развертывания кода
На информационной панели Azure: предоставьте пользователю доступ к одному серверу приложений, базе данных SQL и хранилищу Azure
Ограничение сценария запуска служб приложений Azure
API конвертера файлов HTML в PDF работает в локальной среде, но не при развертывании (node.Js, Express.Js, html-pdf, веб-службы Azure)
Как задать отдельные строки подключения к базе данных для слотов развертывания службы приложений Azure

Похожие вопросы

Azure SDK .NET — пакетное удаление больших двоичных объектов с помощью SAS
Необходимо ПОЛУЧИТЬ токен OAuth только с идентификатором клиента, без секретного кода клиента и URL-адресом перенаправления
Как в Azure Logic Apps получить результаты SQL-запроса в формате JSON и заполнить массив, чтобы можно было использовать результаты в виде условной логики?
Невозможно передать аннотации в Helm
«ODataError: один из предоставленных аргументов неприемлем» при попытке составить список DocumentSetVersions с помощью Microsoft Graph SDK
Отключите TipMix и файл cookie x-ms-routing-name с веб-сайта
Использование LogMetric в изолированном режиме Azure Function 8.0
Как получить код авторизации в MS Graph API 6.12
Функция Azure завершается сбоем из-за ошибки: неправильное имя пользователя или пароль: C:\host\LogFiles\Application\Function\Host
Невозможно получить DurableClient в изолированной dotnet функции для устойчивой обработки объектов