ASP.NET Core--配置文件

配置文件

添加配置文件

在项目目录下有个 appsettings.json ,我们先来操作这个文件。

在appsettings.json 添加如下两个节点。

{
  "Data": "LineZero",
  "ConnectionStrings": {
    "DefaultConnection": "数据库1",
    "DevConnection": "数据库2"
  },
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}

读取配置文件

配置文件的读取都是通过一个Configuration对象来读取。具体来说,Configuration对象实际指ConfigurationRoot和ConfigurationSection两个类型。配置文件中根节点所在的Configuration对象被称为ConfigurationRoot,除此之外的其他Configuration对象则被称为ConfigurationSection,配置模型分别定义了接口IConfigurationRoot和IConfigurationSection来表示它们,这两个接口都是IConfiguration的继承者
在这里插入图片描述
Configuration对象是由ConfigurationBuilder创建的,
而原始的配置信息来源是通过ConfigurationSource获取的的,
所以读取配置信息时首先需要一个 ConfigurationRoot对象,所以读取过程是:先创建一个ConfigurationBuilder对象,在ConfigurationBuilder对象上添加或者注册数据源 ConfigurationSource(可以注册一个或者多个), 最后调用Buid()方法,来实现我们需要的Configuration对象的一个实例。

即:

  IConfiguration config = new ConfigurationBuilder()
                    //注册一个或者多个ConfigurationSource对象,在此注册一个内存配置来源
                    .Add(
                             ……
                    ).Build();  //通过Buid()方法,创建 Configuration对象

注册多个配置来源

  var builder = new ConfigurationBuilder();
    builder.AddInMemoryCollection(dict);//内存配置源
    builder.SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json");//注册当前路径下的配置源

在这里插入图片描述

控制台读取配置文件**

   var builder = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("appsettings.json");
            Configuration = builder.Build();
            Console.WriteLine($"Name = {Configuration["Data"]}");
            Console.WriteLine($"hold:ceshi = {Configuration["hold:ceshi"]}");
            Console.WriteLine($"ConnectionStrings:NetCoreForWebContext={Configuration["ConnectionStrings:NetCoreForWebContext"]}");
            Console.WriteLine($"Logging:LogLevel:Default={Configuration["Logging:LogLevel:Default"]} ");
            Console.WriteLine($"Logging:IncludeScopes={Configuration["Logging:IncludeScopes"]} ");
            Console.WriteLine($"list:NUM={Configuration["list:NUM"]} ");
            Console.WriteLine($"list:Age={Configuration["list:Age"]} ");
            Configuration["list:Age"] = "99";//并不能更新配置文件
            Console.WriteLine($"list:Age={Configuration["list:Age"]} ");

控制器中读取

Asp.net框架默认添加了IConfiguration的依赖注入

 public class MoviesController : Controller
 {
     public IConfiguration Configuration { get; }
     public MoviesController(IConfiguration configuration)
     {
            Configuration = configuration;
     }
 }

对象读取

我们在appsettings.json 都添加一个 SiteConfig 节点。

 "SiteConfig": {
   "Name": "LineZero's Blog",
   "Info": "ASP.NET Core 开发及跨平台,配置文件读取"
 },

然后新建一个SiteConfig 类。

public class SiteConfig
{
    public string Name { get; set; }
    public string Info { get; set; }
}

首先在 ConfigureServices 中添加Options 及对应配置。

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.AddOptions();       services.Configure<SiteConfig>(Configuration.GetSection("SiteConfig"));
}

然后我们在 Controller 中读取。

public class HomeController : Controller
{
    public SiteConfig Config;

    public HomeController(IOptions<SiteConfig> option)
    {
        Config = option.Value;
    }
    public IActionResult Index()
    {
        return View(Config);
    }
}

自定义配置文件

添加一个配置文件appSetting.Development.json并修改program.cs

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args).ConfigureAppConfiguration(config => {
                config.AddJsonFile("appSetting.Development.json");
            }).UseStartup<Startup>();

多环境配置文件

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args).ConfigureAppConfiguration((context,config) => {
                config.AddJsonFile($"appSetting.{context.HostingEnvironment.EnvironmentName}.json");
            }).UseStartup<Startup>();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sufengmarket

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值