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 接口的方式。
- 建立并书写好自定义json 配置文件。
- 在program 类中使用 ConfigureAppConfiguration 方法以指定应用的配置提供程序,即 将自定义的配置json 文件添加到应用程序的配置文件集合中。
- controller 中调用,使用 构造函数注入,由asp.net core 内置容器注入一个IConfiguration 接口类型的对象。
这样就能获取到自定义json 配置文件的信息。
方式二
使用IOptions 接口的方式
- 建立并书写好自定义json 配置文件。
- 在program程序启动类中将json配置文件加入到asp.net core 程序的配置文件集合中,与方式一一致。
- 新建实体类,类名需要和节点名称一致,即 在自定义json 配置文件中 需要读取的具体节点信息的节点名称 保持一致。类型的属性 需要需要读取节点的节点信息的数据类型保持一致,其中节点下的key 值就应是实体类的属性名。
- 在startup 中的ConfigureService 注册服务。
- 在controller 中调用,也是使用构造函数注入,注入一个 定义的实体类,从注入的实体类中获取到节点数据。
这样也可以获取到json 的配置信息。
asp.net core 读取appsettings.json 配置信息
方式一:
使用IConfiguration 接口的方式
- appsettings.json 配置文件已经定义好所需的节点信息,当然可以不一定是appsettings.json 文件也可以是 appsettings.Production.json 或 appsettings.Development.json 文件。例如 读取数据库连接字符串。
- 首先在statup 中的configureService 方法中进行注入,
使用 services.AddSingleton(COnfiguration); 注册。
- 然后在 controller 中调用, 使用构造函数注入,一个 IConfiguration 接口类型的对象,使用使用 .GetSection(“ConnectionStrings”)[“DeefaultConnection”] 类似的方式获取所需的节点信息。
方式二:
使用IOptions 接口的方式
- 书写好对应 appsettings.json 配置文件。
- 定义一个实体类,类名需要和节点的名称保持一致,实体类的属性也推荐和json 的节点名称保持一致,数据类型需要保持一致。
- 在startup 的 configureservice 方法中注册,使用
services.Configure<ConnectionStrings>(Configuration.GetSection("ConnectionStrings"));
// todo 这里的注册方式 和 上面的读取自定义json 配置文件中的方式二 的
代码语言:javascript复制ConnectionStrings option = new ConnectionStrings();
Configuration.GetSection("ConnectionStrings").Bind(option);
services.AddSingleton(option);
功能是一致的。
- 在controller 中调用,通过构造函数注入,注入一个 IOptions类型的对象,在IOptions 的T 中传入 定义的实体类。使用就是通过对象访问属性的方式。