[英]Is it possible to rename ASPNETCORE_ENVIRONMENT variable?
在ASP.NET Core WebAPI project
Startup
类中的Configure
方法中...
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
注入的IWebHostEnvironment
由ASPNETCORE_ENVIRONMENT环境变量中的值驱动。
我们可以重命名这个变量吗? 如果是,重命名它是一个好习惯吗?
您不能真正重命名环境变量ASPNETCORE_ENVIRONMENT
或DOTNET_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_ENVIRONMENT
和ASPNETCORE_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.