将 Azure Function 从 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();
但是,因为它需要仅在函数运行时可用的上下文
,所以我们无法创建在所有函数之间共享的静态类。是否可以在 Azure Functions v2 中静态读取 app.settings.json?
最佳答案
我们可以使用
var config = new ConfigurationBuilder()
.AddEnvironmentVariables()
.Build();
string cacheConnection = config["CacheConnection"];
或者简单地
Environment.GetEnvironmentVariable("CacheConnection");
local.settings.json
中的值(以及 Azure 上的应用程序设置)会在函数主机启动时自动注入(inject)到环境变量中。
关于c# - 如何在 Azure Function v2(核心)中静态使用 ConfigurationBuilder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54238992/