[英]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.