Словарь в настройках приложения конфигурации Azure

#c# #azure #.net-core #azure-devops #appsettings

Вопрос:

У меня есть пример приложения в .NET core, файл appsettings.json используется для хранения конфигураций.

В этом файле json я создал иерархию, которая должна быть преобразована в словарь<строка, строка>, к которому можно получить доступ из некоторых методов в моем коде.

Все работает правильно и никаких проблем до сих пор.

Теперь это приложение размещено в Azure, и я переношу все свои параметры в раздел Конфигурация Azure — Параметры приложения.

введите описание изображения здесь

Значения параметров приложений на первом уровне правильно работают в разделе параметров Azure (например, SampleSettingAddress).

Знаете ли вы, как словарь (OptionsDictionary, MusicUrls) следует размещать в полях настроек Azure? Возможно ли это?

      "SampleSetting": {
    
        "SampleSettingAddress": "sample",
    
        "SampleSettingEmailAddress": "sample",
    
     
    
        "MusicUrls": {
    
          "musicStore": "https://samplemusic1.com/hits/",
    
          "musicStoreAn": "https://samplemusic2.com/hits/",
    
          "musicStoreExt": "https://samplemusic3.com/hits/"
    
        },
    
        "OptionsDictionary": {
    
          "key1": "sample1",
    
          "key2": "sample2",
    
          "key3": "sample3"
    
        }
    
    }

 

 

public class SampleSetting

    {

        public string SampleSettingAddress { get; set; }

 

        public string SampleSettingEmailAddress { get; set; }

 

        public Dictionary<string, string> MusicUrls { get; set; }

                              

        public Dictionary<string, string> OptionsDictionary { get; set; }

                              

   }

 

    "SampleSetting": {
    
        "SampleSettingAddress": "sample",
    
        "SampleSettingEmailAddress": "sample",
    
     
    
        "MusicUrls": {
    
          "musicStore": "https://samplemusic1.com/hits/",
    
          "musicStoreAn": "https://samplemusic2.com/hits/",
    
          "musicStoreExt": "https://samplemusic3.com/hits/"
    
        },
    
        "OptionsDictionary": {
    
          "key1": "sample1",
    
          "key2": "sample2",
    
          "key3": "sample3"
    
        }
    
    }

 

 

public class SampleSetting

    {

        public string SampleSettingAddress { get; set; }

 

        public string SampleSettingEmailAddress { get; set; }

 

        public Dictionary<string, string> MusicUrls { get; set; }

                              

        public Dictionary<string, string> OptionsDictionary { get; set; }

                              

   }
 

Ответ №1:

Конечно, это, безусловно, возможно сделать. Вот как бы вы это сделали:

 Name: SampleSetting__SampleSettingAddress
Value: sample

Name: SampleSetting__MusicUrls__musicStore
Value: https://samplemusic1.com/hits/
 

В основном вам нужно будет выровнять объект JSON и использовать __ его в качестве разделителя. Если вы работаете в Windows, вы также можете использовать : вместо __ .