Конфигурация приложения Azure: двойное подчеркивание не эквивалентно двоеточию при попытке обозначить вложенность

В конфигурации приложения Azure я назвал свои параметры следующим образом: «Section1__SubSection1__MySetting». При попытке привязать конфигурацию к соответствующему классу параметров в моем приложении .NET 6 она не отображается правильно (нуль). Если я изменю «__» на «:», все будет работать нормально.

Я пытаюсь разобраться, почему и как вы можете использовать двойное подчеркивание для обозначения вложенности, потому что обычно рекомендуется использовать «__» для более универсальной поддержки. Если я использую «:» в ключах конфигурации приложений Azure, будет ли оно работать, если я запущу свое приложение на компьютере с Linux?

Может кто-нибудь объяснить все это?

AFAIK, : не будет работать в среде Linux.

Harshitha 05.10.2023 08:38

Можете поделиться снимком экрана настроек приложения.

Harshitha 05.10.2023 08:41

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

Harshitha 05.10.2023 08:46
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
3
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Написано с помощью [StackEdit](>Двойное подчеркивание не эквивалентно двоеточию при попытке обозначить вложенность

Да, обозначение вложенной конфигурации зависит от среды хостинга (Windows/Linux).

Если вы хотите установить вложенную конфигурацию в приложении Windows, вам необходимо указать символ : после имени вложенного ключа (который вы уже пробовали).

Вы можете видеть, что то же самое упоминается в MSDoc

В службе приложений Linux по умолчанию или пользовательском контейнере Linux любую вложенную структуру ключей JSON в имени параметра приложения, например ApplicationInsights:InstrumentationKey, необходимо настроить в Службе приложений как ApplicationInsights__InstrumentationKey для имени ключа. Другими словами, любой : следует заменить на __ (двойное подчеркивание).

  • Из приведенного выше документа ясно, что для привязки вложенной конфигурации в среде Linux нам нужно использовать двойное подчеркивание __.

Проверьте приведенное ниже обходное решение:

  • Я выполнил Конфигурацию приложений Azure с ASP.NET Core, чтобы добавить вложенную конфигурацию.

  • Я создал веб-приложение и развернул его на Linux App Service.

  • Изначально я установил конфигурацию с помощью : и __.

и попытался получить значения.

В Program.cs:

string myconn = builder.Configuration.GetConnectionString("AppConfig");
//string myconn = builder.Configuration.GetSection("AppConfig").Value;
builder.Configuration.AddAzureAppConfiguration(myconn);

В Index.cshtml:

<h4>With Semicolon - @myconfig["Test:Settings:SemiColon"]</h4>
<h4>With UnderScore - @myconfig["Test__Settings__UnderScore"]</h4>

Локальный выход:

Я развернул приложение на Azure Linux App service.

Вывод развернутого приложения:

И :, и __ работали у меня для развернутого приложения в Linux App Environment с Azure App Configuration.

Когда я попробовал то же самое с Azure App Settings,

Локальный appsettings.json файл:

"Section1": {
  "SubSection1": {
    "MySetting": "Value from Local"
  }
}
  • Изначально я установил конфигурацию с помощью : и попытался получить значение.

Локальный выход:

  • : worked here.

  • Я развернул приложение на Azure Linux App service.

  • To override the value with the Azure App Settings, I have set the value as below (with:).

  • При добавлении настройки вы можете увидеть ошибку ниже.

  • Я попробовал с __ и это позволило мне добавить.

Вывод развернутого приложения:

Если я использую «:» в ключах конфигурации приложений Azure, будет ли оно работать, если я запущу свое приложение на компьютере с Linux?

  • Да, : работает на Azure Linux App Service в Azure App Configuration.

  • Тогда как над __ работал только Azure Linux с Azure App Settings.

Спасибо за подробный ответ! Это помогло многое объяснить. Итак, похоже, что поставщик конфигурации приложений Azure автоматически обрабатывает преобразование «:» в «__» в средах Linux, если я правильно понимаю, верно?

killswitch 06.10.2023 18:50

@killswitch — не преобразование. Мы не можем редактировать имя ключа, можно изменить только значение. Конфигурация приложения принимает __ новую запись.

Harshitha 06.10.2023 18:58

Но поскольку «:» работает в Службе приложений Azure Linux, то, чтобы он работал, поставщик интерпретирует его как «__».

killswitch 06.10.2023 19:21

Да... согласно обходному пути, я заметил, что оба работают.

Harshitha 06.10.2023 19:27

Другие вопросы по теме