Рекомендуемая практика, как включить более сложные данные конфигурации JSON в файл функции Azure local.settings.json? - PullRequest
0 голосов
/ 23 ноября 2018

Я использую функции Azure 2

Я рассматриваю документацию файла локальных настроек функции Azure здесь:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local#local-settings-file

Для документации приведен примерФайл local.settings.json:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "AzureWebJobsDashboard": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*"
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}

Я понимаю, что элементы в « Значения » будут доступны через переменные среды, такие как Environment.GetEnvironmentVariable

Мне нужновключить более сложные настройки (вложенные данные JSON с массивами в них) в настройках моей функции.

Каков наилучший или рекомендуемый способ сделать это?

1 Ответ

0 голосов
/ 24 ноября 2018
Ожидается, что

Values collection будет Dictionary<string, string>, поэтому мы не можем поместить вложенные данные JSON с массивами внутри.Попробуйте создать новый раздел для ваших данных Json и, как обычно, прочитать файл Json.Мы не можем использовать Environment.GetEnvironmentVariable, потому что пользовательские настройки не импортируются в переменные среды.

{
  "Values": {},
  "CustomSettings":{}
}

Добавьте ExecutionContext context к сигнатуре метода функции, чтобы найти файл настроек.

var reader = new StreamReader(context.FunctionAppDirectory+"/local.settings.json");
var myJson = reader.ReadToEnd();

Для функции v2 мы можем использовать ConfigurationBuilder.

var config = new ConfigurationBuilder()
    .SetBasePath(context.FunctionAppDirectory)
    .AddJsonFile("local.settings.json", optional: false, reloadOnChange: true)
    .AddEnvironmentVariables()
    .Build();

local.settings.json предназначен для предоставления локальному разработчику эквивалента настроек приложения на портале Azure, по умолчанию он не публикуется в Azure.Чтобы опубликовать его, щелкните правой кнопкой мыши по проекту> Edit <functionappname>.csproj и удалите <CopyToPublishDirectory>Never</CopyToPublishDirectory>.

...