Azure发布管道IIS Web应用程序部署替换appsettings.json

问题描述 投票:0回答:2

我正在通过包含2个任务的Azure发布管道将Web应用程序部署到主要Windows服务器上。 IIS Web App管理和IIS Web App部署。

我遇到的问题是,我需要用完全不同的文件替换appsettings.json。我们有3个环境(dev / test / prod),并且每个环境在源代码管理中都有自己的appsettings.json。

[我看到有一个JSON变量替换,但是我不想替换变量,我想说“嘿,使用这个文件而不是这个文件”。

我如何在Azure Devops中执行此操作?如果我要解决所有这些错误,请告诉我。这是我公司多年来所做的事情,我真的不想在管道中创建变量来更新我的appsettings.json。

谢谢!

iis azure-devops azure-pipelines web-deployment
2个回答
0
投票

您是否要根据不同的环境使用相应的appsettings.json?如果是这样,核心项目可以从appsettings.[environment].json文件中的每个数据检索到ASPNETCORE_ENVIRONMENT environment variable

1。将相应的appsettings.[environment].json文件添加到项目中,例如appsettings.Production.jsonappsettings.Development.json,并在每个文件中设置相应的值。

2。启动文件中的代码:

public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                .AddEnvironmentVariables();
            Configuration = builder.Build();
        }

3。在每个环境机器上设置/添加ASPNETCORE_ENVIRONMENT环境变量(只需设置/添加一次)

这里是参考:Configuration in ASP.NET Corecase


0
投票

您需要为每个环境创建appsettings.json,然后以这种方式更改您的代码:

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
    .SetBasePath(env.ContentRootPath)
    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
    .AddEnvironmentVariables();
    this.configuration = builder.Build();
}

您需要使用环境ASPNETCORE_ENVIRONMENTDevStaging的值定义名为Wahtever you like env name的环境变量。

如果您需要更多信息,在这里您会发现不错的blog post

这里您也有很多有关设置环境文件的信息。 Automatically set appsettings.json for dev and release environments in asp.net core?

© www.soinside.com 2019 - 2024. All rights reserved.