在ASP .Net Core中获取运行环境,我们可以使用依赖注入IWebHostEnvironment ,下面是一个Web框架下的启动类。当然你也可以在任何地方使用它,如果你的类不是注入方式获取的,那么可以在启动后保存它的值,任何地方可以直接获取。

public class Startup
    {
        public Startup(IConfiguration configuration, IWebHostEnvironment env)
        {
            Configuration = configuration;
            Environment = env;
        }

        public IConfiguration Configuration { get; }

        private  IWebHostEnvironment Environment { get; }

}

其中 Environment.EnvironmentName 就是我们想要值 (Development/Staging/Production)之一。

还有一个方法使用广泛,这里记录一下:

 if (Environment.IsDevelopment())

lebang2020.cn

环境名的配置与使用要点

除 Development、Staging、Production 三个约定名称外,也可以使用自定义名称,环境名本质只是一个字符串标签。

  • 配置来源:机器环境变量 ASPNETCORE_ENVIRONMENT 优先,开发机由 launchSettings.json 指定;
  • 判断 API 推荐用 env.IsDevelopment()、IsProduction(),不要直接比对字符串;
  • 配置分层:appsettings.json 之后会按序加载 appsettings.{环境名}.json,同名键覆盖,适合放各环境的连接串;
  • 建议把"仅生产开启"的中间件(如压缩、HTTPS 跳转、错误页)都包在环境判断里;
  • 发布到服务器前用 dotnet 命令行确认变量已设置,避免生产以 Development 裸奔。

相关阅读

参考资料