代码之家  ›  专栏  ›  技术社区  ›  silent

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

  •  4
  • silent  · 技术社区  · 6 年前

    我正在将一个Azure函数从v1(.net 4.7)迁移到v2(.net标准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 回复  |  直到 6 年前
        1
  •  11
  •   Mikhail Shilkov    6 年前

    你可以替换 context.FunctionAppDirectory 具有 Environment.CurrentDirectory .

    至少在当地有效,这正是你需要的地方 local.settings.json 为了工作,所以这个改变应该是安全的。