1.appsettings.json
2.appsettings.{xxxx}.json,比如: appsettings.Development.json
3.环境变量
4.命令行

越靠后,优先级越高,将覆盖前者

添加自定义配置

appsettings.json:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",

    "Three": {
    "BoldDepartmentEmployeeCountThreshold": 30
  }

}

获取及其使用配置项:

  • Startup.cs
    public class Startup
    {
        private readonly IConfiguration configuration;
        public Startup(IConfiguration configuatuion)
        {
            configuration = configuatuion;
            var three = configuration["Three:BoldDepartmentEmployeeCountThreshold"];
        }

自定义配置对象及其获取

  • 自定义配置对象 ThreeOptions
    public class ThreeOptions
    {
        public int BoldDepartmentEmployeeCountThreshold { get; set; }
        public int MyProperty { get; set; }
    }
  • 注册配置对象
    public class Startup
    {
        private readonly IConfiguration configuration;
        public Startup(IConfiguration configuatuion)
        {
            configuration = configuatuion;
            //var three = configuration["Three:BoldDepartmentEmployeeCountThreshold"];
        }

        //注册服务
        public void ConfigureServices(IServiceCollection services)
        {
            ...
            services.Configure<ThreeOptions>(configuration.GetSection("Three"));
        }
  • xxxControler中使用:
    public class DepartmentController : Controller
    {
        private readonly IOptions<ThreeOptions> threeOptions;

        public DepartmentController(IDepartmentService departmentService, IOptions<ThreeOptions> threeOption)
        {
            this.departmentService = departmentService;
        }
  • 在Views使用xxx.cshtml中使用:
@model Three.Models.Department
@inject Microsoft.Extensions.Options.IOptions<Three.ThreeOptions> options
...
        @if (Model.EmployeeCount > options.Value.BoldDepartmentEmployeeCountThreshold)
        {
...
        }
...

自定义配置文件

  • myconfig.json
{
  "Three": {
    "BoldDepartmentEmployeeCountThreshold": 1000
  }
}

Program.cs


        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((context, configBuilder) => 
                {
                    //configBuilder.Sources.Clear();
                    configBuilder.AddJsonFile("myconfig.json");
                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });

myconfig.json 会覆盖 appsettings.json 相同的配置项

相关文章:

  • 2022-12-23
  • 2021-10-24
  • 2022-12-23
  • 2022-12-23
  • 2022-01-21
  • 2022-12-23
  • 2021-08-10
  • 2021-10-29
猜你喜欢
  • 2021-10-25
  • 2021-08-01
  • 2022-01-11
  • 2021-09-04
  • 2021-07-31
  • 2021-11-20
  • 2021-11-06
相关资源
相似解决方案