[Day28] 组态设定 - 我与 ASP.NET Core 3 的 30天

ASP.NET Core 中的设定是使用一或多个组态提供者 (Configuration Providers)来执行。组态提供者可以从各种来源取得组态设定资料

  • JSON File (或是INI、XML)
  • 环境变数
  • 命令列参数
  • 自订组态来源
  • 记忆体内部物件
  • Azure App 组态设定
  • Azure Key Vault

利用 .NET CLI 或是VS等开发工具建立的ASP.NET Core应用程序会产生下列程序码

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}

ConfigureWebHostDefaults会依照下列顺序提供应用程序的预设组态

  1. ChainedConfigurationProvider:加入现有的 IConfiguration 作为来源。在预设设定范例中,新增 host设定,并将其设定为应用程序设定的第一个来源。
  2. 使用JSON 组态提供者的appsettings.js 。
  3. appsettings.{Environment}.json使用JSON组态提供者的。例如,appsettings.Production.json 和 appsettings.Development.json。
  4. 应用程序在 Development环境中执行时的App secrets。
  5. 使用 环境变数组态提供者的环境变数。
  6. 使用 命令列组态提供者的命令列参数。
    备注:越後面载入的优先级越高,会将前面的设定覆盖过去。
    组态设定最终都会变成 key-value 的形式

ConfigureWebHostDefaults在Host实体化之後建立IConfiguration的实体,并放到DI容器中,所以除了在Starup中取得之外,在Controller或是其他类别中也能够过DI的注入取得设定

接着实际操作一次建立设定档并从Startup中读取设定
首先先在appsettings.json中加入

"ConnectionStrings": {
    "DefaultConnection": "server=localhost;Port=3306 ......"
}

接着在Starup.ConfigureServices把注册DBConext的地方做些修改,修改为读取设定档的内容

services.AddDbContext<BlogDbContext>(options =>
                options.UseMySql(
                    Configuration.GetConnectionString("DefaultConnection")));

Configuration取得设定档的方式有两种
Configuration.GetConnectionString("DefaultConnection")
Configuration.["ConnectionString.DefaultConnection"]

参考资料
Configuration in ASP.NET Core


<<:  Day 27 Quantum Protocols and Quantum Algorithms

>>:  [2020铁人赛] Day27 - 部署与相关设定

Day5:进入新手村前先让我复习一下QQ-CSS-flexbox-用在外层容器的属性

上一篇讲到的是基本概念的部分,Flexbox可以把它当成一个容器(Container)以及内容物(i...

{DAY 21} Pandas 学习笔记part.7

前言 这篇文章会进到资料的合并, 通常在处理资料的时候并不会只出现一笔 会需要同时处理很多比有关联的...

Day 15 : 案例分享(5.1) CRM与ERP整合 - 线索与商机

案例说明及适用场景 Odoo CRM 简单区分的话 商机 自动建立 商机 阶段管理 商机 转为订单 ...

Day 30 : 结语

终於到了最後一篇了,就来讲讲这次发铁人赛文的感想吧! 过程分享 这次铁人赛其实有先囤了一些文章,可是...

第 52 篇 - 研究 shell 解释器 - 居然可以支援 function

原来 bash 还可以支持 function 概念 @@+ test@test:~$ vim dem...