簡體   English   中英

如何從 appsettings.json 加載設置字典?

[英]How to load settings dictionary from appsettings.json?

我的 appsettings.json 文件中有一些數據庫設置。 該系統連接到生產中的不同數據庫,其中有 60 多個。

每個客戶在我們的系統中都有一個內部號碼,他們的數據庫有一個連接字符串。

我要做的是加載這些設置,以便我可以驗證它們在啟動/運行狀況檢查時是否正常工作。 我有一個從 ConfigureServices 調用的方法。 它將 IConfiguration 配置作為參數。

"KommuneConfiguration": {
    "localhost": {
      "KommuneNumber": "localhost",
      "ConnectionString": "Server=H52371;Database=DeliveryReport;Trusted_Connection=True;MultipleActiveResultSets=true",
      "TableName": "[DeliveryReport].[dbo].[DeliveryReport]"
    },
    "000": {
      "KommuneNumber": "000",
      "ConnectionString": "Server=172.31.112.106;Database=000_XXXX_02_EDW;Trusted_Connection=True;MultipleActiveResultSets=true",
      "TableName": "[000_XXXX_02_EDW].[gateway].[DeliveryReport]"
    },
    "550": {
      "KommuneNumber": "550",
      "ConnectionString": "Server=172.31.112.106;Database=550_XXXX_02_EDW;Trusted_Connection=True;MultipleActiveResultSets=true",
      "TableName": "[550_XXXX_02_EDW].[gateway].[DeliveryReport]"
    },
    "607": {
      "KommuneNumber": "607",
      "ConnectionString": "Server=172.31.112.106;Database=607_XXXX_02_EDW;Trusted_Connection=True;MultipleActiveResultSets=true",
      "TableName": "[607_XXXX_02_EDW].[gateway].[DeliveryReport]"
    }
  },

我嘗試過的。

這接縫加載他們關鍵的第一級 IE,但 object 值為 null

var serviceClientSettingsConfigKommune = configuration.GetSection("KommuneConfiguration").GetChildren()
            .ToDictionary(x => x.Key, x => x.Value); 

這只是加載 null

  var hold = new KommuneSettings();
  configuration.GetSection("KommuneConfiguration").Bind(hold);

這與第一個加載密鑰相同,但值為 null。

var serviceClientSettingsConfigKommune = configuration.GetSection("KommuneConfiguration").Get<Dictionary<string, KommuneConfiguration>>(); 

這些是我一直在測試的對象。

public class KommuneConfiguration
    {
        public string KommuneNumber { get; set; }
        public string TableName { get; set; }
        public string ConnectionString { get; set; }
    }

 public class KommuneSettings
    {
        public Dictionary<string,KommuneConfiguration> Settings { get; set; }
    }

試試這個方法——

var serviceClientSettingsConfigKommune = configuration.GetSection("KommuneConfiguration").Get<List<KommuneConfiguration>>();

您錯過了配置中的設置

"KommuneConfiguration": { 
"Settings" :{
    "localhost": {
      "KommuneNumber": "localhost",
      "ConnectionString": "Server=H52371;Database=DeliveryReport;Trusted_Connection=True;MultipleActiveResultSets=true",
      "TableName": "[DeliveryReport].[dbo].[DeliveryReport]"
    },
    "000": {
      "KommuneNumber": "000",
      "ConnectionString": "Server=172.31.112.106;Database=000_XXXX_02_EDW;Trusted_Connection=True;MultipleActiveResultSets=true",
      "TableName": "[000_XXXX_02_EDW].[gateway].[DeliveryReport]"
    },
    "550": {
      "KommuneNumber": "550",
      "ConnectionString": "Server=172.31.112.106;Database=550_XXXX_02_EDW;Trusted_Connection=True;MultipleActiveResultSets=true",
      "TableName": "[550_XXXX_02_EDW].[gateway].[DeliveryReport]"
    },
    "607": {
      "KommuneNumber": "607",
      "ConnectionString": "Server=172.31.112.106;Database=607_XXXX_02_EDW;Trusted_Connection=True;MultipleActiveResultSets=true",
      "TableName": "[607_XXXX_02_EDW].[gateway].[DeliveryReport]"
    }
  }},````

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM