Intern Day9 - ASP.NET Core - 应用配置
配置文件介绍
-
配置文件是appsettings.json。在 ASP.NET 中,我们一般使用 Web.config 来进行配置。但是在 ASP.NET Core 中 ,你们会发现 Web.config 已经没了,因为它被 appsettings.json 这个配置文件取代了。
-
我们的主机在创建完成以后,我们的服务容器里就已经默认注册了一些服务,其中有一个服务就是配置服务,这个服务是可以注册到startup类中的构造函数里面。
-
配置文件里,配置项的名称不区分大小写。比如ConnectionString、WebName这些
如何在appsettings.json中读取这些配置:(在Startup.cs中去写)
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 比如:我想读取配置文件中的连接字符串ConnectionString
// 最简单的办法:
app.Run(async context =>
{
var connStr = _configuration["ConnectionString"];
//如果想找一级的下一级,中间用 大分类:小分类 连接
});
}
绑定到配置模型对象
问题原因:使用字符串键名获取配置值很不优雅(比如说我们想去获得一个bool值,但是读取出来的却是string类型),也容易出错。
解决办法:我们可以把配置项绑定到对象。
解决步骤:
- 首先,创建配置项结构对应的配置模型(想要读取哪个配置项就去配置对应的属性)。比如在appsetting.json中有如下内容,我们就需要去创建一个appsetting.cs
- 在appsetting.cs写上:
- 或者采用全部/部分绑定的方式(绑定全部/部分appsetting)(在这个方法里绑定,只能绑定一次用一次)
// 全部绑定
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
var appSetting = new AppSetting();
_configuration.Bind(appSetting);//这时候appSetting就自动绑定了
}
// 部分绑定
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
var webSetting = new WebSetting();
_configuration.GetSection("WebSetting").Bind(webSetting);//这时候appSetting就自动绑定了
}
但是在上面的代码中,我们只能绑定一次用一次,那怎么解决绑定一次可以永久使用呢?
在Startup.cs的Startup方法中,把已经有配置参数的配置(配置选项),当做服务注册进来,哪里想用依赖注入就行了。在Startup.cs的Startup方法中添加如下代码:
- 用非泛型添加:
-
用泛型语句添加:
services.Configure<AppSetting>(_configuration);
注册进来之后如何使用?(注册配置选项)
-
比如说我们想在Startup类下的Configure方法中使用,我们直接在env后面添加(即利用泛型注入的方式):
public void Configure(IApplicationBuilder app, IWebHostEnvironment env,IOptions<AppSetting> appOptions)
-
如何调用:看图片上最后一行代码:
- 注意:凡是可以支持注入的地方,都可以用这种方式获取配置项
自定义配置文件
参考下面的参考博客