Веб-задания Azure не переопределяют appsettings.json с настройками приложения Azure. - PullRequest
3 голосов
/ 08 мая 2019

У меня есть веб-задание Azure (.NET Core 2.2), которое при запуске считывает пару параметров из конфигурации, например:

var builder = new HostBuilder()
    .UseEnvironment(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"))
    .ConfigureWebJobs()
    .ConfigureAppConfiguration((hostContext, configApp) =>
    {
        configApp.AddEnvironmentVariables();
        configApp.AddJsonFile("appsettings.json", optional: false);
    })
    .ConfigureLogging((hostingContext, logging) =>
    {
        logging.AddConsole();

        var instrumentationKey = hostingContext.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
        if (!string.IsNullOrEmpty(instrumentationKey))
        {
            Console.Writeline(instrumentationKey); // <- this always outputs key from appsettings.json, not from Azure Settings
            logging.AddApplicationInsights(instrumentationKey);
        }
    })
    .UseConsoleLifetime();     

Как видите, файл appsettings.json должен иметьКлавиша APPINSIGHTS_INSTRUMENTATIONKEY, и она отлично читает в среде разработки.

Теперь для производства я хочу переопределить этот ключ APPINSIGHTS_INSTRUMENTATIONKEY, добавив параметр с тем же ключом в веб-интерфейс параметров приложения Azure.

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

Есть ли возможность для моей веб-работы использовать настройки приложения Azure без необходимостиудалить ключи из appsettings.json?

1 Ответ

2 голосов
/ 09 мая 2019

Проблема в том, что параметры приложения Azure отправляются через переменные среды;и вы сначала загружаете переменные окружения, затем переопределяете с помощью appsettings.json:

.ConfigureAppConfiguration((hostContext, configApp) =>
    {
        configApp.AddEnvironmentVariables();
        configApp.AddJsonFile("appsettings.json", optional: false);
    })

Измените это на

.ConfigureAppConfiguration((hostContext, configApp) =>
    {
        configApp.AddJsonFile("appsettings.json", optional: false);
        configApp.AddEnvironmentVariables();
    })

И он сначала загрузит ваш appsettings.json, а затем переопределит с помощьюпеременные окружения.

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