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

时间:2020-04-25 21:54:38

标签: iis azure-devops azure-pipelines web-deployment

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

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

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

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

谢谢!

2 个答案:

答案 0 :(得分: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?

答案 1 :(得分: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