Как установить переменные окружения из appsettings.json для основного консольного приложения .net? - PullRequest
0 голосов
/ 04 ноября 2019

Я работаю с классом C #, который читает из настроек приложения, используя

Environment.GetEnvironmentVariable("setting")

Я хочу создать другую консольную программу (.net core 3.0), которая считывает настройки из appsettings.json и загружает их в средуПеременные.

static void Main(string[] args)
{
     var builder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json")
                .AddEnvironmentVariables();

            IConfiguration config = builder
                .Build();

    var businessLogic = new BusinessLogic(); // uses GetEnvironmentVariable to get configuration
}

В моем классе бизнес-логики переменные среды не возвращаются правильно. В чем может быть проблема?

appsettings.json в следующем формате:

{
    "SETTING" : "setting value"
}

1 Ответ

0 голосов
/ 04 ноября 2019

Environment.GetEnvironmentVariable("setting") всегда будет пытаться прочитать данные из переменной среды, а не из загруженной конфигурации.

Вам необходимо изменить класс BusinessLogic, чтобы он принимал созданный вами объект config и использовал егочто для доступа к настройкам. Пример:

public class BusinessLogic
{
    public BusinessLogic(IConfiguration config)
    {
        var value = config.GetValue<string>("SETTING");
    }
}

В этом примере value будет содержать правильное значение SETTING, если оно было задано в последний раз в appsettings.json или с использованием переменной среды.

...