配置取决于平台

时间:2019-06-13 21:33:31

标签: c# amazon-web-services asp.net-core configuration

我有一个Web应用程序.netcore Web应用程序,希望与平台无关。根据应用程序的部署,即docker或aws,我希望能够为应用程序使用不同的配置方法。

使用docker机密,我在启动时使用路径/ run / secrets添加Json文件,但是如何使用AWS开发工具包使用其他方法配置AWS机密。

如果将应用程序部署到AWS,我如何将其更改为使用AWS开发工具包秘密管理器

谢谢

示例startup.cs是

    public Startup(IHostingEnvironment env)
    {
        var basePath = (env.EnvironmentName.Equals("Development") ? "c:" : "");

        var builder = new ConfigurationBuilder()
                            .AddJsonFile($"{basePath}/run/secrets/xx1", optional: true)
                            .AddJsonFile($"{basePath}/run/secrets/xx2", optional: true)
                            .AddJsonFile($"{basePath}/run/secrets/xx2", optional: true)
                            .AddJsonFile($"{basePath}/run/secrets/xx4", optional: true);

        Configuration = builder.Build();
    }

1 个答案:

答案 0 :(得分:0)

我不确定这是否是您要寻找的东西,但是您可以使用预处理器。您可以添加条件编译符号,并且仅包含特定目标所需的代码。可以使用#define在构建选项卡的项目属性中或文件的顶部设置这些符号。

例如:

#define aws
using System;

public class Program
{
    public static void Main(string[] args)
    {
#if docker
        Console.WriteLine("Build for docker.");
#endif
#if aws
        Console.WriteLine("Build for aws.");
#endif
    }
}