Читайте настройки в другом разделе, чем значения - PullRequest
0 голосов
/ 03 января 2019

У меня есть следующий файл настроек:

{
  "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 голосов
/ 03 января 2019

Только Values секция внедряется в переменные окружения во время выполнения функции Azure, следовательно, мы ничего не получаем для другого раздела.

Нам нужно прочитать файл 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).

...