如何在 Azure Function v2(核心)中静态使用 ConfigurationBuilder?
Posted
技术标签:
【中文标题】如何在 Azure Function v2(核心)中静态使用 ConfigurationBuilder?【英文标题】:How to use ConfigurationBuilder staticly in an Azure Function v2 (core)? 【发布时间】: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?
【问题讨论】:
【参考方案1】:我们可以使用
var config = new ConfigurationBuilder()
.AddEnvironmentVariables()
.Build();
string cacheConnection = config["CacheConnection"];
或者干脆
Environment.GetEnvironmentVariable("CacheConnection");
local.settings.json
(也是 Azure 上的应用程序设置)中的值会在函数主机启动时自动注入到 EnvironmentVariables 中。
【讨论】:
以上是关于如何在 Azure Function v2(核心)中静态使用 ConfigurationBuilder?的主要内容,如果未能解决你的问题,请参考以下文章