【问题标题】:.Net Core 3.1 adding additional config.json file to configuration argument in Startup.Net Core 3.1 将额外的 config.json 文件添加到启动中的配置参数
【发布时间】:2020-06-17 07:15:38
【问题描述】:

我需要向我的 .Net Core Blazor 项目添加另一个配置文件。 其他来源(例如this)提到在.Net core 2.2中使用配置生成器,但由于在3.1中配置作为参数传递给Startup,据我所知,我无法将另一个配置附加到它上面。也许我看错了,但我假设作为参数传入的配置具有重要的配置属性,因此仅使用附加配置文件自行构建它似乎将这些配置属性排除在外。

例如:不起作用,但应该画出我正在尝试做的事情。

public Startup(IConfiguration configuration)
{
      Configuration = configuration;
      var builder = new ConfigurationBuilder(configuration)
              .AddJsonFile("accountconstants.json", optional: true, reloadOnChange: true);
      });
}

【问题讨论】:

    标签: c# asp.net-core parameters blazor


    【解决方案1】:

    您可以在Program.cs 中执行此操作,即在管道的早期而不是在Startup.cs 中。

    例子:

    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }
    
        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((hostContext, config) =>
                {
                    var env = hostContext.HostingEnvironment;
    
                    config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }
    

    【讨论】:

    【解决方案2】:

    您的方法应该可行,但需要稍作调整。

    您创建的配置需要添加到 DI 容器中。 这方面的文档是here

    我在 Azure Functions 和其他项目中也通过以下方式实现了它:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddSingleton<IConfiguration>(provider => new ConfigurationBuilder()
                .AddEnvironmentVariables()
                .AddJsonFile("accountconstants.json", optional: true, reloadOnChange: true)
                .Build());
    }
    

    【讨论】:

    • 哦,我明白了,所以我什至可以将配置添加到服务中,如果我只将单个配置文件添加到服务实例,这将派上用场,以减少未来的抽象。谢谢!
    • 似乎 AddJsonFile() 在 .NET Core 5 中不再存在。
    • 啊,我必须添加“Microsoft.Extensions.Configuration.Json”包!
    猜你喜欢
    • 1970-01-01
    • 2020-11-27
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多