【问题标题】:How to use ConfigurationBuilder staticly in an Azure Function v2 (core)?如何在 Azure Function v2(核心)中静态使用 ConfigurationBuilder?
【发布时间】:2019-06-11 20:01:07
【问题描述】:

在将 Azure 函数从 v1 移植到 v2 时,配置管理器用于读取 local.settings.json 的方式发生了变化。

之前,我使用下面的代码来启用函数实例之间的redis连接池:

public static class Redis
{
    /// <summary>
    /// Initializes the REDIS connection.
    /// </summary>
    private static readonly Lazy<ConnectionMultiplexer> LazyConnection = new Lazy<ConnectionMultiplexer>(() =>
    {
        return ConnectionMultiplexer.Connect(ConfigurationManager.AppSettings["CacheConnection"]);
        });

    public static IDatabase Database => LazyConnection.Value.GetDatabase();
}

但是在 v2 中,ConfigurationManager 不再可用,我们必须使用类似的东西:

new ConfigurationBuilder()
        .SetBasePath(context.FunctionAppDirectory)
        .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
        .AddEnvironmentVariables()
        .Build();

但是,因为它需要 context,它只在函数运行时可用,所以我们不能创建一个在所有函数之间共享的静态类。是否可以在 Azure Functions v2 中静态读取 app.settings.json?

【问题讨论】:

    标签: c# azure .net-core azure-functions


    【解决方案1】:

    我们可以使用

    var config = new ConfigurationBuilder()
        .AddEnvironmentVariables()
        .Build();
    string cacheConnection = config["CacheConnection"];
    

    或者干脆

    Environment.GetEnvironmentVariable("CacheConnection");
    

    local.settings.json(也是 Azure 上的应用程序设置)中的值会在函数主机启动时自动注入到 EnvironmentVariables 中。

    【讨论】:

      猜你喜欢
      • 2020-07-20
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 1970-01-01
      • 2020-04-09
      • 2021-05-02
      相关资源
      最近更新 更多