我有以下设置文件:
{
"IsEncrypted": false,
"Values": {
"UniquePermisionsQueueConnStr": "xx",
"UniquePermisionsQueueName": "spo-unique-permissions-reporting",
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"AzureWebJobsDashboard": "UseDevelopmentStorage=true"
},
"CosmosDB": {
"UniquePermisionsQueueConnStr": "xx"
}
}
我可以使用ConfigurationManager.AppSettings [“ UniquePermisionsQueueName”]读取值部分中的设置,而无需任何道具。或环境...
但是,如何获取CosmosDB部分中的值?我尝试了ConfigurationManager.AppSettings [“ CosmosDB:UniquePermisionsQueueName”],但是没有运气。
答案 0 :(得分:1)
Azure函数运行时仅将Values
部分插入到环境变量中,因此其他部分没有任何帮助。
我们需要照常读取Json文件。在函数方法签名中添加ExecutionContext context
,然后尝试下面的代码。
var r = new StreamReader(context.FunctionAppDirectory+"/local.settings.json");
var myJson = r.ReadToEnd();
dynamic config = JsonConvert.DeserializeObject(myJson);
var cosmosDBSettings = config.CosmosDB as JObject;
var uniquePermisionsQueueConnStr = cosmosDBSettings.GetValue("UniquePermisionsQueueConnStr").ToString();
对于部署到Azure,local.settings.json
用于本地开发,默认情况下不会上载到Azure。我们应该删除<CopyToPublishDirectory>Never</CopyToPublishDirectory>
中的<functionname>.csproj
(右键单击项目和Edit <functionname>.csproj
)。