ASP.NET CORE Study02

2023-11-30 19:04:28 浏览数 (2)

asp.net core 配置文件加载优先级

默认情况下,项目下 的 launchSettings.json 配置文件的优先级最高,appsettings.Development.json 优先级次之,appsettings.json 配置文件优先级最后。 注意的是,在appsettings.json 下可以更具需求建立多个settings.json ,如development.json ,productionsetting.json 等json 配置文件,每个不同json 文件可以进行专门不同的配置信息,不仅可以使针对开发环境进行独立配置,在较为复杂的业务场景下还可以专门将一部分配置抽离出来,比如connectionsetting.json 专门进行各类连接的配置。

因为launchsettings 配置文件是项目启动是加载的配置,是一定会最先被加载,优先级固然最高,而appsettings 配置信息则是项目运行是加载的信息,优先级当然低于launchsetting配置文件。

asp.net core 读取自定义json 配置信息
方式一:

使用IConfiguration 接口的方式。

  1. 建立并书写好自定义json 配置文件。
  2. 在program 类中使用 ConfigureAppConfiguration 方法以指定应用的配置提供程序,即 将自定义的配置json 文件添加到应用程序的配置文件集合中。
  1. controller 中调用,使用 构造函数注入,由asp.net core 内置容器注入一个IConfiguration 接口类型的对象。

这样就能获取到自定义json 配置文件的信息。

方式二

使用IOptions 接口的方式

  1. 建立并书写好自定义json 配置文件。
  2. 在program程序启动类中将json配置文件加入到asp.net core 程序的配置文件集合中,与方式一一致。
  3. 新建实体类,类名需要和节点名称一致,即 在自定义json 配置文件中 需要读取的具体节点信息的节点名称 保持一致。类型的属性 需要需要读取节点的节点信息的数据类型保持一致,其中节点下的key 值就应是实体类的属性名。
  4. 在startup 中的ConfigureService 注册服务。
  1. 在controller 中调用,也是使用构造函数注入,注入一个 定义的实体类,从注入的实体类中获取到节点数据。

这样也可以获取到json 的配置信息。

asp.net core 读取appsettings.json 配置信息
方式一:

使用IConfiguration 接口的方式

  1. appsettings.json 配置文件已经定义好所需的节点信息,当然可以不一定是appsettings.json 文件也可以是 appsettings.Production.json 或 appsettings.Development.json 文件。例如 读取数据库连接字符串。
  2. 首先在statup 中的configureService 方法中进行注入,

使用 services.AddSingleton(COnfiguration); 注册。

  1. 然后在 controller 中调用, 使用构造函数注入,一个 IConfiguration 接口类型的对象,使用使用 .GetSection(“ConnectionStrings”)[“DeefaultConnection”] 类似的方式获取所需的节点信息。
方式二:

使用IOptions 接口的方式

  1. 书写好对应 appsettings.json 配置文件。
  2. 定义一个实体类,类名需要和节点的名称保持一致,实体类的属性也推荐和json 的节点名称保持一致,数据类型需要保持一致。
  3. 在startup 的 configureservice 方法中注册,使用
代码语言:javascript复制
services.Configure<ConnectionStrings>(Configuration.GetSection("ConnectionStrings"));

// todo 这里的注册方式 和 上面的读取自定义json 配置文件中的方式二 的

代码语言:javascript复制
ConnectionStrings option = new ConnectionStrings();
Configuration.GetSection("ConnectionStrings").Bind(option);
services.AddSingleton(option);

功能是一致的。

  1. 在controller 中调用,通过构造函数注入,注入一个 IOptions类型的对象,在IOptions 的T 中传入 定义的实体类。使用就是通过对象访问属性的方式。

0 人点赞