1. 程式人生 > 程式設計 >ASP.NET Core中的配置詳解

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配置內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!