簡體   English   中英

從 appsettings.json 配置文件中讀取

[英]Read from appsettings.json config file

我的 appsettings.json 文件中有以下配置

 {
  "AppSettings": {
    "MainUser": {
      "Name": "Urs",
      "Surname": "Barandun",
      "SesstionTimeInMin": "30",
    }
  },

我想創建一個自定義配置類並綁定它。 例如:

MainUserConfiguration mainUserConfiguration = new MainUserConfiguration();
var configSection = config.GetSection("MainUserConfiguration");
configSection.Bind(mainUserConfiguration);

但是,我的代碼不起作用。 :/

根據您提供的內容,您的 appsettings 文件和配置的嵌套 JSON 不匹配。 典型的 ASP.NET Core appsettings.json沒有名為“AppSettings”的嵌套元素,而且您會得到一個名為“MainUserConfiguration”的配置部分,而您的實際 JSON 只是將該部分命名為“MainUser”。

應用設置示例:

{
  "MyFirstClass": {
    "Option1": "some string value",
    "Option2": 42
  },
  "MySecondClass": {
    "SettingOne": "some string value",
    "SettingTwo": 42
  }
}

在您的代碼中:

public class MyFirstClass
{
    public string Option1 { get; set; }
    public int Option2 { get; set; }
}

public class MySecondClass
{
    public string SettingOne { get; set; }
    public int SettingTwo { get; set; }
}

在您的 Startup.cs 中(假設您使用定義的Configuration對象訪問它:

var myFirstClass = Configuration.GetSection("MyFirstClass").Get<MyFirstClass>();
var mySecondClass = Configuration.GetSection("MySecondClass").Get<MySecondClass>();
Console.WriteLine($"The answer is always {myFirstClass.Option2}");

在啟動時試試這個

var appSettingsUserSection = configuration.GetSection("AppSettings:MainUser");

    services.Configure<MainUser>(appSettingsUserSection);

    var settings = appSettingsUserSection.Get<MainUserSettings>();
     var name=settings.Name; //Urs

班級

public class MainUserSettings
{
    public string Name { get; set; }
    public string Surname { get; set; }
    public int SesstionTimeInMin { get; set; }
}

現在您可以使用這樣的代碼在任何類中使用它,例如在控制器中

public class MyController:Controller
    {
        private readonly IOptions<MainUserSettings> _userSettings;

        public MyController (IOptions<MainUserSettings> userSettings)
        {
            _userSettings = userSettings;
        }

        public  IActionResult MyAction()
        {
            var name=_userSettings.Name; //Urs
        }
}

暫無
暫無

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

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