ASP.NET Core中的配置詳解

ASP.NET Core 提供瞭一個靈活可擴展,基於鍵值的配置系統. 但是配置系統獨立於ASP.NET Core是Microsoft.Extensions 類庫的部分. 它可以用於任何類型的應用程序

1、以鍵-值對的形式讀取配置

appsettings.json 文件:

{
  "Position": {
    "Title": "編輯器",
    "Name": "Joe Smith"
  },
  "MyKey": "My appsettings.json Value",
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}

在ConfigureServices方法裡面添加如下測試代碼:

var myKeyValue = Configuration["MyKey"];
    var title = Configuration["Position:Title"];
    var name = Configuration["Position:Name"];
    var defaultLogLevel = Configuration["Logging:LogLevel:Default"];

2、多環境配置

使用默認配置,EnvironmentVariablesConfigurationProvider 會在讀取 appsettings.json、appsettings.Environment.json 和機密管理器後從環境變量鍵值對加載配置 。 因此,從環境中讀取的鍵值會替代從 appsettings.json、appsettings.Environment.json 和機密管理器中讀取的值 。在 launchSettings.json 中設置的環境變量,在 launchSettings.json 中設置的環境變量將替代在系統環境中設置的變量。

3、讀取結構化的配置數據

添加一個類 TestSubSectionConfig 對應於配置文件中的 subsection 節點

public class TestSubSectionConfig
  {
    public string SubOption1 { get; set; }
    public string SubOption2 { get; set; }
  }

在ConfigureServices方法裡面添加如下測試代碼:

//使用GetSection解析配置文件的節
var subsectionOptions = Configuration.GetSection("subsection").Get<TestSubSectionConfig>();
var suboption2 = subsectionOptions.SubOption2;

Console.WriteLine($"subsection:suboption2: {suboption2}");

如果需要在Controller裡面使用,可以通過依賴註入的方式:

在ConfigureServices裡面註冊配置項。

public void ConfigureServices(IServiceCollection services)
{
  //註冊配置到服務容器
  services.Configure<TestSubSectionConfig>(Configuration.GetSection("subsection"));

  //var subsectionOptions = Configuration.GetSection("subsection").Get<TestSubSectionConfig>();
  //services.Configure<TestSubSectionConfig>(options =>
  //{
  //  options.SubOption1 = subsectionOptions["suboption1"];
  //  options.SubOption2 = subsectionOptions["suboption2"];
  // });

}

public class HomeController : Controller
{
  private TestSubSectionConfig _subSectionConfig;
  private ILogger<HomeController> _logger;

  public HomeController(IOptions<TestSubSectionConfig> option, ILogger<HomeController> logger)
  {
    _subSectionConfig = option.Value;
    _logger = logger;
  }

  public IActionResult Index()
  {
    _logger.LogInformation($"SubOption1: {_subSectionConfig.SubOption1}");
    _logger.LogInformation($"SubOption2: {_subSectionConfig.SubOption2}");
    return View();
  }
}

到此這篇關於ASP.NET Core中的配置詳解的文章就介紹到這瞭,更多相關ASP.NET Core配置內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: