我正在使用Azure Functions 2
我正在这里浏览Azure Function Local设置文件文档:
https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local#local-settings-file
根据文档,这是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数据)。
什么是最佳做法或推荐做法?
答案 0 :(得分:1)
Values
集合应该是Dictionary<string, string>
,因此我们不能将嵌套的JSON数据与数组放在一起。尝试为您的Json数据创建一个新部分,并照常读取Json文件。我们无法使用Environment.GetEnvironmentVariable
,因为自定义设置未导入到环境变量中。
{
"Values": {},
"CustomSettings":{}
}
在功能方法签名中添加ExecutionContext context
,以找到设置文件。
var reader = new StreamReader(context.FunctionAppDirectory+"/local.settings.json");
var myJson = reader.ReadToEnd();
对于v2功能,我们可以使用ConfigurationBuilder
。
var config = new ConfigurationBuilder()
.SetBasePath(context.FunctionAppDirectory)
.AddJsonFile("local.settings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
local.settings.json
旨在为本地开发人员提供Azure门户中等效的应用程序设置,默认情况下不会发布到Azure。要发布它,请右键单击项目> Edit <functionappname>.csproj
并删除<CopyToPublishDirectory>Never</CopyToPublishDirectory>
。