簡體   English   中英

.NET Core - 在Azure部署任務中設置環境變量

[英].NET Core - Set Environment Variable in Azure Deployment Task

我目前正在嘗試使用launchSettings.json文件來管理應用程序的環境變量,因此我的Setup.cs文件可以通過env.IsDevelopmentEnvironment()等方式管理環境。

在VSTS中,如何在Azure部署任務上設置環境變量ASPNETCORE_ENVIRONMENT 或者它應該進入我的構建步驟中的dotnet publish任務?

因為ASPNETCORE_ENVIRONMENT是一個環境變量,所以您只需在Azure上指定它即可。

請參閱有關在Azure上定義環境變量的方式和位置的Stack Overflow答案。

如果您希望保持部署過程是冪等的,我建議使用此部署步驟在Azure Web App上進行設置。

https://marketplace.visualstudio.com/items?itemName=pascalnaber.PascalNaber-Xpirit-WebAppConfiguration

從技術上講,它還將發布設置添加到web.config,這對於核心應用程序來說不是必需的,但重要的是,它還為Azure主機設置了環境變量。

如果您已指定在Startup.cs中使用環境變量:

    public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder()
                         .SetBasePath(env.ContentRootPath)
                         .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)                             
                         .AddEnvironmentVariables(); //override settings with environment variables

        var config = builder.Build();

        Configuration = config;

    }

因此,如果你有一個發布變量:appsetting.ASPNETCORE_ENVIRONMENT = Release,你會發現如果你通過Kudu上的PowerShell控制台進行檢查,$ env:ASPNETCORE_ENVIRONMENT確實會是“Release”。

我實際上使用此擴展來在發布時覆蓋我的所有appsettings.json變量以及ASPNETCORE_ENVIRONMENT,而不是令人注意一些appsettings。{environment} .json文件。 我可以通過在我的VSTS版本變量名稱中使用正確的命名約定來覆蓋環境變量。

例如,如果我的appsettings.json具有以下結構:

 { settings: { secret: { foo: "bar" } } } 

我可以使用釋放變量覆蓋,例如:

appsetting.settings:secret:foo =“bar”

然后在部署后檢查Azure Web App上的$ env:settings:secret:foo

在我的源代碼中沒有做任何額外的操作或者解壓縮Web部署包,標記化配置文件然后在msdeploy之前重新壓縮,我有特定於環境的配置。

您可以安裝Replace Token擴展,然后在構建/發布定義中添加Replace Token任務。 此任務可以使用您在構建/發布定義中添加的變量值替換文件中的字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM