是否可以通过代码保存Azure Function应用设置?

时间:2020-04-30 12:01:22

标签: c# azure azure-functions appsettings

让我们考虑一下我用于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属性。

但是我希望我的函数也能够在azure函数应用程序设置中设置MyFlag属性的值。不幸的是,Azure和本地环境的价值都没有改变。

我试图这样绑定属性

        config.Bind("Values", this);

Configuration类构造函数中,它只能在本地环境中工作。但是,它不适用于Azure环境。

是否可以通过Azure功能将值存储到应用程序设置中?

2 个答案:

答案 0 :(得分:0)

您需要使用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"];
}

答案 1 :(得分:0)

此处提供了另一种解决方案的帖子:Save Changes of IConfigurationRoot sections to its *.json file in .net Core 2.2

希望它能按预期回答您的问题...