推荐练习如何在Azure函数local.settings.JSON文件中包含更复杂的配置JSON数据?

推荐练习如何在Azure函数local.settings.JSON文件中包含更复杂的配置JSON数据?,azure,azure-functions,azure-functions-runtime,azure-functions-core-tools,Azure,Azure Functions,Azure Functions Runtime,Azure Functions Core Tools,我正在使用Azure功能2 我将在此处浏览Azure函数本地设置文件文档: 根据文档,以下是local.settings.json文件的示例: { "IsEncrypted": false, "Values": { "FUNCTIONS_WORKER_RUNTIME": "<language worker>", "AzureWebJobsStorage": "<connection-string>", "AzureWebJobsDashbo

我正在使用Azure功能2

我将在此处浏览Azure函数本地设置文件文档:

根据文档,以下是local.settings.json文件的示例:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "AzureWebJobsDashboard": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*"
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}
我知道“值”中的项目将通过环境变量(如environment.GetEnvironmentVariable)提供

我需要在函数的设置中包含更复杂的设置嵌套JSON数据和数组

做这件事的最佳实践或推荐实践是什么?

值集合应该是一个字典,因此我们不能将带有数组的嵌套JSON数据放入其中。尝试为Json数据创建一个新部分,并像往常一样读取Json文件。无法使用Environment.GetEnvironmentVariable,因为自定义设置未导入到环境变量中

{
  "Values": {},
  "CustomSettings":{}
}
将ExecutionContext上下文添加到函数方法签名以定位设置文件

var reader = new StreamReader(context.FunctionAppDirectory+"/local.settings.json");
var myJson = reader.ReadToEnd();
对于v2函数,我们可以使用ConfigurationBuilder

local.settings.json旨在为本地开发人员提供与Azure portal中的应用程序设置相同的设置,默认情况下不会发布到Azure。要发布它,右键单击project>Edit.csproj并删除Never

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