#c# #azure #azure-functions
Вопрос:
Я использую appsettings.json
для настройки своей функции Azure (netcoreapp3.1, запущенной на компьютере с Windows).
В appsettings.json
файле есть массив с настройками:
{
"ArraySettings": [
{
"ArraySettingProperty1": "ArraySetting1Value1",
"ArraySettingProperty2": "ArraySetting1Property2"
},
{
"ArraySettingProperty1": "ArraySetting2Value1",
"ArraySettingProperty2": "ArraySetting2Property2"
}
],
"SingleSetting": "SingleValue"
}
Это прекрасно работает, если я запускаю функцию Azure локально. Но, похоже, это не работает в Azure, хотя appsettings.json
файл был развернут и может быть найден функцией Azure.
В Startup.cs
:
private IConfiguration InitializeConfiguration(IFunctionsHostBuilder functionsHostBuilder)
{
ExecutionContextOptions executionContextOptions = functionsHostBuilder
.Services
.BuildServiceProvider()
.GetService<IOptions<ExecutionContextOptions>>()
.Value;
return new ConfigurationBuilder()
.SetBasePath(executionContextOptions.AppDirectory)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
}
Это то, что я уже пробовал (безуспешно):
- Копирование настроек в
Values
разделlocal.settings.json
файла - Добавление параметров в Параметры приложения в Azure (с комментариями
appsettings.json
конфигурации и без них) в следующих ключевых форматах:2.1 Наборы массивов:Свойства набора массивов1:0
2.2 ArraySettings__ArraySettingsProperty1__0
2.3 Значения__ArraySettings__ArraySettingsProperty1__0
Почему параметры массива работают локально, но не в Azure? Как я могу заставить их работать в Azure? Спасибо!
Ответ №1:
Пожалуйста, попробуйте настроить их следующим образом в настройках конфигурации в вашей службе приложений:
Key: ArraySettings__0__ArraySettingProperty1
Value: ArraySetting1Value1
Key: ArraySettings__0__ArraySettingProperty2
Value: ArraySetting1Value2
Key: ArraySettings__1__ArraySettingProperty1
Value: ArraySetting1Value1
Key: ArraySettings__1__ArraySettingProperty2
Value: ArraySetting1Value2
Key: SingleSetting
Value: SingleValue
Если ваша служба приложений развернута в Windows, вы можете использовать :
ее в качестве разделителя вместо __
. Однако __
работает как в Windows, так и в Linux.