我可以将appsettings.json移出app目录吗?

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

我想将我的appsettings.json文件放在web文件夹之外,以便我可以避免将其存储在源代码管理中。我怎样才能做到这一点?

asp.net-core asp.net-core-mvc
2个回答
4
投票

它似乎不喜欢相对路径。但是,这有效......

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((hostingContext, config) =>
        {
            if (!hostingContext.HostingEnvironment.IsDevelopment())
            {
                var parentDir = Directory.GetParent(hostingContext.HostingEnvironment.ContentRootPath);
                var path = string.Concat(parentDir.FullName, "\\config\\appsettings.json");

                config.AddJsonFile(path, optional: false, reloadOnChange: true);
            }
        })
        .UseStartup<Startup>()
        .Build();

因此,它是默认情况下添加的源之上的另一个设置文件。


3
投票

如果你真的不希望它在你的源代码控制中,那么最好的建议是将它保持在原来的位置,只需将它添加到源代码控制的忽略中,因此它永远不会像@PmanAce建议的那样提交。

但是,我个人认为应该承诺像appsettings.json这样的文件。它们主要用于记录应用程序所需的配置。如果没有这个作为指导,那么任何人都应该知道他们将要创建的appsettings.json应该包含什么,因为它不会被包含在源代码控制的拉动中?

也就是说,存储敏感数据需要考虑的问题。但是,还有其他方法。您可以使用其他配置方式(如环境变量和/或用户机密)来覆盖appsettings.json中的任何内容。因此,对于连接字符串之类的东西,在appsettings.json中提供占位符,以便自我记录需要提供的值,但是为了您自己的个人用途,利用用户机密和/或环境变量来覆盖该值。真实。这样,您就可以自由安全地提交appsettings.json,完整记录您的应用程序所需的设置,而无需担心其中包含个人或机密信息。

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