Можно ли сохранить настройки приложения Azure из кода? - PullRequest
0 голосов
/ 30 апреля 2020

Давайте рассмотрим следующий класс, который я использую для конфигурации моей функции Azure:

internal class Configuration
{
    private readonly IConfigurationRoot config;

    public Configuration(ExecutionContext context)
    {
        config = new ConfigurationBuilder()
            .SetBasePath(context.FunctionAppDirectory)
            .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
            .AddEnvironmentVariables()
            .Build();
    }


    public bool MyFlag
    {
        get => bool.TryParse(config[nameof(MyFlag)], out var value) ? value : false;
        set => config[nameof(MyFlag)] = value.ToString();
    }
}

Функция может легко прочитать свойство MyFlag из настроек приложения.

Но я хочу, чтобы моя функция могла устанавливать значение свойства MyFlag в настройках приложения azure. К сожалению, значение не изменяется как в Azure, так и в локальных средах.

Я пытался связать свойство следующим образом

        config.Bind("Values", this);

в конструкторе класса Configuration, и оно работает, но только в местной среде. Однако он не работает в среде Azure.

Возможно ли сохранить значение в настройках приложения из функции azure?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Еще один пост с решением существует здесь: Сохранить изменения IConfiguration Root разделов в его *. json файле в. net Core 2.2

Надеюсь, что он отвечает ваш вопрос, как и ожидалось ...

0 голосов
/ 30 апреля 2020

Вам нужно использовать класс IConfiguration, чтобы иметь возможность извлекать значения из конфигурации appSettings или также может называться вашим local.settings.json.

Для доступа к вам myFlag вы можете сделать это

public MyService(IConfiguration configuration){
  // For a section 
  var emailConfig = configuration.GetSection("Email");
  // For a single value
  var myFlagVal = config["MyFlag"];
}
...