将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();
}
Run Code Online (Sandbox Code Playgroud)
但是在v2中,ConfigurationManager不再可用,我们必须使用类似以下内容:
new ConfigurationBuilder()
.SetBasePath(context.FunctionAppDirectory)
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
Run Code Online (Sandbox Code Playgroud)
但是,由于它要求context仅在函数运行时可用,因此我们无法创建在所有函数之间共享的静态类。是否可以在Azure Functions v2中静态读取app.settings.json?