簡體   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