c# - 是否可以重命名 ASPNETCORE_ENVIRONMENT 变量?
问题描述
在类的Configure
方法中......Startup
ASP.NET Core WebAPI project
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
好用,后者不会很快消失。
推荐阅读
- swift - 如何将数据从一个视图控制器传递到另一个视图控制器以及在视图控制器之间有一个显示视图控制器
- dask - 读取/检索大型数据集时的 Dask 调度程序行为
- google-apps-script - 使用 Hubspot 跟踪 Google 幻灯片事件
- c# - 在第二个窗口中显示视频(UWP C#)
- javascript - 为什么此代码适用于 querySelector 而不是 getElementByClassName?
- vue.js - vue 使用 v-model 时为输入文本添加货币
- javascript - 使用 jwt 结构重置密码
- python - Matplotlib Affine2D 对象没有属性“skew_deg”
- javascript - 在 div 中输入输入文本,但不交换旧文本
- javascript - 内部主干模型方法并从服务器更新