mac*_*acm 3 c# json azure azure-functions
我知道我可以在 local.settings.json 的 value {} 部分下添加所有环境变量。然而,我正在努力保持家里整洁,并且希望我能做这样的事情。
本地.settings.json
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"AzureWebJobsDashboard": "",
"Hello": "world"
},
"ClientConfiguration": {
"this": "that",
"SubscriberEndpoint": "",
"Username": "",
"Password": "",
"ObjectEndpoint": ""
}
}
Run Code Online (Sandbox Code Playgroud)
在我的代码中我有
var config = JsonConvert.DeserializeObject<myConnectionObject> (Environment.GetEnvironmentVariable("ClientConfiguration"));
Run Code Online (Sandbox Code Playgroud)
无论我做什么,我都无法让它发挥作用。为什么我至少无法获取 ClientConfiguration 的内容?只是不断返回空值。
如果我将 ClientConfiguration {} 添加到类似的值
..."Values" : { ...
"Hello":"world",
"ClientCOnfiguration" : {above}
}
Run Code Online (Sandbox Code Playgroud)
我最终得到一个错误,说找不到 azurewebjobsstorage 并且“功能设置列表”只是空的
对于local.settings.json,只有Valuessection可以导入到环境变量中。(如果你的函数是v2,则ConnectionStringssection也存在于环境变量中)。所以你会看到结果为 null。
更重要的是,Valuessection是a 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>();
Run Code Online (Sandbox Code Playgroud)
如果您的函数是 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);
Run Code Online (Sandbox Code Playgroud)
请注意,这local.settings.json是针对本地开发的,默认情况下不会上传到 Azure。需要删除<CopyToPublishDirectory>Never</CopyToPublishDirectory>在functionname.csproj.
| 归档时间: |
|
| 查看次数: |
7776 次 |
| 最近记录: |