读取其他部分中的设置而不是值

时间:2019-01-03 14:45:43

标签: c# azure azure-functions

我有以下设置文件:

{
  "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”],但是没有运气。

1 个答案:

答案 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)。