现在,我们可以使用.NETCore中非常灵活的配置引擎-我们可以执行以下操作:
private static IConfigurationRoot SetConfig(ExecutionContext executionContext)
{
return new ConfigurationBuilder()
.SetBasePath(executionContext.FunctionAppDirectory)
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
}
这很棒,因为它允许您将更复杂的配置数据放入配置文件-例如
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "<< removed >>",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"APPINSIGHTS_INSTRUMENTATIONKEY": "<< removed >>"
},
"MyCustomSettings": [
{
"ConnectionString": "<< removed >>",
"Folders": [
{
"ShareName": "share1",
"FolderName": "folder1"
},
{
"ShareName": "share2",
"FolderName": "folder2"
}
]
}
]
}
再次-好消息!我现在可以使用config [“ MyCustomSettings”]
访问我的强类型配置我不明白的是-发布函数时如何部署它。仅“值”部分迁移到Azure函数“应用程序设置”。我显然可以将此自定义json放在json文件中,并将其添加到类似local.settings.json
的load语句中。.AddJsonFile("my-custom-settings.json", optional: false, reloadOnChange: true)
但是此文件必须包含在部署中,并且不能安全存储。
有什么想法吗?
答案 0 :(得分:2)
自2019年11月起,此功能尚未正式支持。
避免尝试从“消费”计划中的文件中读取值,例如local.settings.json或appsettings。{environment} .json。由于托管基础架构无法访问配置信息,因此随着应用程序的扩展,从这些文件中读取的与触发器连接有关的值将不可用。
建议这样做的博客太多,并且如果您只有一个实例,这似乎可能会奏效,但是ScaleController触发扩展后,新实例将无法找到配置文件。
职能团队is considering possible Options(大声笑)
还可以选择使用新的App Configuration服务,但该服务当前处于预览状态,并且并非在所有Azure区域都可用。
将配置放在blob存储中并在启动时加载它可能更简单? (您的Blob存储区连接字符串将需要包含在env变量中)