Azure Function v2 - 如何将配置加载为singelton?

时间:2018-05-22 14:55:30

标签: azure azure-functions

我将Azure功能从v1(.NET 4.7)迁移到v2(.NET Standard 2)。在v1版本中,我使用了一些静态变量,我从配置中读取这些变量以获得单个(Cosmos DB客户端)

private static string cosmosDbUri = ConfigurationManager.AppSettings["CosmosDb.Uri"];
//...
private static MyCosmosDbClient cosmosDbClient = new MyCosmosDbClient(cosmosDbUri, ...);

对于v2,我会切换到配置的ConfigurationBuilder:

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

现在有一个问题,就是这个需要ExecutionContext,我只能在执行该函数时得到(或知道如何获得)。

所以我的问题是,如何解决这个问题?构建一个Init(ExecutionContext context)方法,只有在配置尚未加载时才会调用,或者有更好的方法来执行此操作?

1 个答案:

答案 0 :(得分:11)

您可以将context.FunctionAppDirectory替换为Environment.CurrentDirectory

至少,这在本地工作,而且恰好在local.settings.json工作的地方,所以这个改变应该是安全的。