主要的环境变量如下
- Development
- Staging
- Production
设置环境变量
主要是在两个地方,这里说明一下,如果launchSettings.json有值会覆盖系统环境变量,如果两个都没有值,则环境为Production
1、launchSettings.json文件里面
{
....
"profiles": {
"IIS Express": {
.....
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "taging"
}
},
.....
}
}
2、系统环境变量里面
获取环境变量信息
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
if (env.IsStaging()||env.IsProduction()||env.IsEnvironment("UAT"))
{
throw new Exception("不是开发环境");
}
app.UseStaticFiles();
app.Run(async (content) =>
{
await content.Response.WriteAsync("Hosting EnvironmentName:" + env.EnvironmentName + "Hosting ApplicationName:" + env.ApplicationName);
});
}
如图所示,都是通过IWebHostEnvironment 这个接口实现的实例来操作的
- IsDevelopment、IsStaging、IsProduction、IsEnvironment(“UAT”)(自定义环境名称),都是用来判断是否为某个环境,然后进行操作
- env.EnvironmentName、env.ApplicationName都是为了获取环境的信息
总结
- ASPNETCORE_ENVIRONMENT变量可以设置在运行时环境(Runtime Enviroment)
- 在开发机器上,我们在launchsetting.json文件中设置环境变量
- 而Staging或者Prodution的变量,我们尽量在操作系统中设置
- 使用IHostingEnvironment服务访问运行时环境
- 除了标准环境(Development,Staging,production)之外,还支持自定义环境(UAT、QA等)