WebAPI-配置
WebAPI-配置
ASP.NET Core 按照以下顺序加载配置源,后面的配置源可以覆盖前面的配置源:
-
appsettings.json
-
appsettings.{Environment}.json
-
secrets.json
(仅限开发环境) -
环境变量
-
命令行参数
ASPNETCORE_ENVIRONMENT
运行环境:ASP.NET Core会从环境变量中读取名字为ASPNETCORE_ENVIRONMENT的值,从而读取相应的配置文件(appsetting.json)
Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")
除了可以在系统的环境变量中配置此项之外,还可以直接在ide中配置启动时的环境变量
而ide会从launchSettings.json文件中读取来定义项目在开发环境中的启动配置,其中就包含了environmentVariables
一项
此项定义的环境变量,会被ide加载,在启动时应用
"WebAPI": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "https://localhost:7066;http://localhost:5117",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development" // 启动时使用Development配置文件启动
}
综上,我总结了三种配置环境变量的方式
- 系统中配置环境变量
- 在开发时,通过ide配置环境变量(会读取launchSettings.json中的内容)
- 在Gitlab的CI中,配置项目启动的环境变量
IWebHostEnvironment
IWebHostEnvironment
接口在 ASP.NET Core 中用于提供有关当前托管环境的信息,例如环境名称(如开发、生产、测试等)
-
获取环境名称:通过
EnvironmentName
属性获取当前环境的名称。 -
访问内容根目录:通过
ContentRootPath
属性获取应用的内容根目录路径。 -
访问 Web 根目录:通过
WebRootPath
属性获取应用的 Web 根目录路径
无论是在Program还是其他文件中,我们只需要将IWebHostEnvironment注入,即可直接获取想要的内容
IHostEnvironment 是 ASP.NET Core 3.0 及之后版本中引入的接口,用于替代 IWebHostEnvironment
secrets.json
在开发过程中,如果使用appsetting.json的文件配置方式来配置一些应用的账号和密码,然后上传到github上,会导致非常严重的安全问题
这时我们可以使用secrets.json来保存我们的文件配置
数据库配置
在之前的项目中,数据库服务的配置方式是通过DbContext文件中,直接使用明文字符串进行配置
我们可以在Program.cs文件中,利用配置文件的方式直接进行配置
program.cs
builder.Services.AddDbContext<DBContext>(option =>
{
var str = builder.Configuration.GetValue<string>("ConnectionStrings:DefaultConnection");
option.UseNpgsql(str);
});
DbContext
需要注入的是,必须将DbContextOptions作为构造函数的形参注入到DBContext中,并将对象options传给父类DbContext的构造函数中调用
public class DBContext:DbContext
{
public DBContext(DbContextOptions options) : base(options)
{
}
DbSet<Person> Persons { get; set; }
}
配置好后,就可以直接在服务层注入DBContext依赖,并直接调用