Веб-приложение Azure для контейнеров (aspnetcore 2.2) не считывает значения параметров приложения Azure при запуске

У меня есть веб-приложение для контейнеров, работающих в Azure, которое я работаю локально с локальным файлом appsettings.

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

Однако после развертывания сайт не получает значения параметров приложения из Azure. Он использует файлы из файла. Я использую имена с двойным подчеркиванием, как указано.

Я создал testcontroller для вывода значений appsettings. Это фрагмент того, что выводит тестовое представление:

Build version: 2019.1.23.1
Location: local
Database__DatabaseConnectionString: Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=application;Data Source=.
---
-------
Env vars: Key WEBSITE_AUTH_SIGNING_KEY Value ASDS*(&*&*(SDSD05C29
Key DOTNET_RUNNING_IN_CONTAINER Value true
Key WEBSITE_ROLE_INSTANCE_ID Value 0
Key Database__DatabaseConnectionString Value Server=tcp:servername01.database.windows.net,1433;Initial Catalog=application;Persist Security Info=False;User ID=applicationUser;Password=password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
Key APPSETTING_Database__DatabaseConnectionString Value Server=tcp:servername01.database.windows.net,1433;Initial Catalog=application;Persist Security Info=False;User ID=applicationUser;Password=password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

Как видно, Database__DatabaseConnectionString должна использоваться приложением. Но это не так.

В чем может быть проблема? Согласно документации aspnetcore, это должна быть стандартная функциональность.


person ossentoo    schedule 23.01.2019    source источник


Ответы (1)


Оказывается, это ошибка в приложении. У рассматриваемых контроллеров есть введенные IOptions, которые вводятся в конструктор. К сожалению, один из контроллеров вел себя иначе, поскольку вместо этого внедрялся конкретный экземпляр. Поскольку этот объект неправильно инициализировался в Startup.cs, это приводит к передаче пустых значений в конструктор.

Наконец, когда были обнаружены пустые значения, это означает, что использовались значения по умолчанию appsettings.json.

После исправления этой вышеупомянутой ошибки (гарантируя, что все контроллеры используют одни и те же значения IOptions), значения параметров приложения Azure подбираются и правильно используются приложением во время запуска.

person ossentoo    schedule 30.01.2019