.Net Core 3.1 将额外的 config.json 文件添加到 Startup 中的配置参数

fr-*_*mli 8 c# parameters asp.net-core blazor

我需要向我的 .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);
      });
}
Run Code Online (Sandbox Code Playgroud)

brk*_*brk 11

您可以在Program.csie 更早的管道中而不是在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>();
            });
}
Run Code Online (Sandbox Code Playgroud)


pei*_*ent 8

您的方法应该有效,但需要一些调整。

您创建的配置需要添加到 DI 容器中。有关此内容的文档位于此处

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

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

  • 啊,我必须添加“Microsoft.Extensions.Configuration.Json”包! (4认同)