繁体   English   中英

是否可以重命名 ASPNETCORE_ENVIRONMENT 变量?

[英]Is it possible to rename ASPNETCORE_ENVIRONMENT variable?

ASP.NET Core WebAPI project Startup类中的Configure方法中...

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

注入的IWebHostEnvironmentASPNETCORE_ENVIRONMENT环境变量中的值驱动。

我们可以重命名这个变量吗? 如果是,重命名它是一个好习惯吗?

您不能真正重命名环境变量ASPNETCORE_ENVIRONMENTDOTNET_ENVIRONMENT的名称。 这些内置于您在创建 ASP.NET Core 应用程序时可能会使用的默认主机生成器中。

但是,您可以做的是使用您自己的配置源配置主机。 这样,您可以从不遵循标准名称的环境变量中注入配置。 例如,如果您想从环境变量stage读取环境名称,那么您可以修改CreateHostBuilder以包含对修改配置的ConfigureHostConfiguration的调用:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureHostConfiguration(c => {
            c.AddInMemoryCollection(new Dictionary<string, string>()
            {
                ["Environment"] = Environment.GetEnvironmentVariable("stage"),
            });
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

请注意,如果你调用ConfigureHostConfiguration之前ConfigureWebHostDefaults ,那么你需要确保你的launchSettings.json不包含配置为ASPNETCORE_ENVIRONMENT变量或您的自定义变量将被覆盖。 您还可以交换这两个调用,使您的环境变量优先于标准名称。 当然,这仅适用于开发(因为生产中没有launchSettings.json )。

回答你的最后一个问题:这是个好主意吗? 可能不是。 除非您出于外部原因需要这样做(例如,为了适应您无法控制的现有部署流程),否则您应该坚持使用默认名称以确保所有相关方正确理解影响。

只是为了澄清这一点: DOTNET_ENVIRONMENTASPNETCORE_ENVIRONMENT都很好用,后者不会很快消失。

有一种内置的方式来设置应用程序的环境:

public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .UseEnvironment("WHAT EVER YOU WANT")//set it for this app
            .ConfigureWebHostDefaults(webBuilder =>
            {
              webBuilder.UseStartup<Startup>();
            });

如您所见,您可以使用 'UseEnvironment("MY COOL ENVIRONMENT")' 将其设置为您想要的任何值。

它的来源可以是任何环境变量、文件、数据库、硬编码……任何你能想到的东西。

这是一些文档。 滚动到名为EnvironmentName的部分以查找有关它的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM