我将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)
方法,只有在配置尚未加载时才会调用,或者有更好的方法来执行此操作?
答案 0 :(得分:11)
您可以将context.FunctionAppDirectory
替换为Environment.CurrentDirectory
。
至少,这在本地工作,而且恰好在local.settings.json
工作的地方,所以这个改变应该是安全的。