Azure Function 读取 local.settings.json 到对象

2024-02-06

我知道我可以在 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 并且“功能设置列表”只是空的


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

更重要的是,Values部分是一个Dictionary<string, string>这意味着值不能是除字符串之外的其他格式。因此你的ClientCOnfiguration里面会导致错误。

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

Add 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> in functionname.csproj.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure Function 读取 local.settings.json 到对象 的相关文章

随机推荐