Как считывать значения из host.json при настройке функции таймера Azure в .Net 5

#c# #azure-functions #.net-5

Вопрос:

Следующий код, похоже, не выбирает значения конфигурации из файла host.json в переменную BuildConfig. Тот же шаблон отлично работает в Asp.Net Ядро. Можете ли вы сказать, в чем может быть проблема? Я не могу войти в код, чтобы увидеть значение, потому что VS 2019 зависает из-за проблемы, которую уже отслеживает Microsoft.

     var host = new HostBuilder()
        .ConfigureFunctionsWorkerDefaults()
        .ConfigureAppConfiguration((hostingContext, configBuilder) =>
        {
            var builtConfig = configBuilder.Build();

            int configRefreshSeconds = int.TryParse(builtConfig["ConfigRefreshSeconds"], out configRefreshSeconds) ? configRefreshSeconds : 600;

            // add keyvault
            configBuilder.AddAzureKeyVault(new AzureKeyVaultConfigurationOptions
            {
                Vault = $"https://{builtConfig["KeyVaultName"]}.vault.azure.net/",
                ReloadInterval = TimeSpan.FromSeconds(configRefreshSeconds),
                Client = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(
                   new AzureServiceTokenProvider().KeyVaultTokenCallback))
            });
        })
        .ConfigureServices((hostBuilderContext, services) => {
        // Get IConfiguration
        var configuration = hostBuilderContext.Configuration;
        // Add DI
        })
        .Build();
 

Комментарии:

1. Какое значение вы пытаетесь прочитать из файла host.json ? Насколько я понимаю, host.json-это скорее мета-файл конфигурации, используемый средой выполнения функций. Вероятно, вам не следует смешивать там настройки, связанные с вашим приложением. Вы всегда можете добавить другой файл json (например, myappsettings.json) в качестве источника конфигурации с помощью IConfigurationBuilder.AddJsonFile метода. В prod вы определите эту запись конфигурации как параметры приложения, чтобы она была безопасной.