gpt4 book ai didi

c# - Azure Function 读取 local.settings.json 到对象

转载 作者:太空宇宙 更新时间:2023-11-03 22:39:53 31 4
gpt4 key购买 nike

我知道我可以在 local.settings.json 的 value {} 部分下添加所有环境变量。然而,我正在努力保持家里整洁,并且希望我能做这样的事情。

本地.settings.json

   {
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"AzureWebJobsDashboard": "",
"Hello": "world"
},
"ClientConfiguration": {
"this": "that",
"SubscriberEndpoint": "",
"Username": "",
"Password": "",
"ObjectEndpoint": ""
}
}

在我的代码中我有

 var config = JsonConvert.DeserializeObject<myConnectionObject> (Environment.GetEnvironmentVariable("ClientConfiguration"));

无论我做什么,我都无法让它发挥作用。为什么我至少无法获取 ClientConfiguration 的内容?只是不断返回空值。

如果我将 ClientConfiguration {} 添加到类似的值

..."Values" : { ... 
"Hello":"world",
"ClientCOnfiguration" : {above}
}

我最终得到一个错误,提示无法找到 azurewebjobsstorage 并且“func 设置列表”为空

最佳答案

对于local.settings.json ,仅Values部分可以导入到环境变量中。(如果您的函数是v2,ConnectionStrings部分也存在于环境变量中)。因此您会看到结果为 null。

更重要的是,Values部分是 Dictionary<string, string>这意味着值不能是除字符串之外的其他格式。因此你的ClientCOnfiguration内部结果错误。

由于您想要重新组织这些设置,请序列化 ClientConfiguraiton将其存储在Values中似乎不是一个好的选择。我们可能只需要读取并解析 Json 文件。

添加ExecutionContext context在您的函数方法签名中并尝试下面的代码。

var reader = new StreamReader(context.FunctionAppDirectory+"/local.settings.json");
var myJson = reader.ReadToEnd();
dynamic config = JsonConvert.DeserializeObject(myJson);
var clientConfiguration = config.ClientConfiguration as JObject;
myConnectionObject mco = clientConfiguration.ToObject<myConnectionObject>();

如果您的函数是 v2,还有另一种方法 ConfigurationBuilder .

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

请注意local.settings.json适用于本地开发,默认不会上传到Azure。需要删除<CopyToPublishDirectory>Never</CopyToPublishDirectory>functionname.csproj .

关于c# - Azure Function 读取 local.settings.json 到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52843564/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com