Функция Azure v2 - как загрузить конфигурацию как сингелтон? - PullRequest
0 голосов
/ 22 мая 2018

Я выполняю миграцию функции Azure с v1 (.NET 4.7) на v2 (.NET Standard 2).В версии v1 я использовал некоторые статические переменные, которые я читал из конфига следующим образом, чтобы получить синглтон (клиента Cosmos DB)

private static string cosmosDbUri = ConfigurationManager.AppSettings["CosmosDb.Uri"];
//...
private static MyCosmosDbClient cosmosDbClient = new MyCosmosDbClient(cosmosDbUri, ...);

Для v2 я бы переключился на ConfigurationBuilder для моей конфигурации:

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

Теперь существует проблема, что для этого требуется ExecutionContext , который я получаю (или знаю, как получить) только при выполнении функции.

Итакмой вопрос, как справиться с этим лучше всего?Создайте метод Init(ExecutionContext context), который я бы вызвал, только если конфиг еще не загружен или есть лучшие способы сделать это?

1 Ответ

0 голосов
/ 22 мая 2018

Вы можете заменить context.FunctionAppDirectory на Environment.CurrentDirectory.

По крайней мере, это работает локально, и именно там вам нужно local.settings.json, чтобы работать, поэтому это изменение должно быть безопасным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...