我需要向我的.Net Core Blazor项目添加另一个配置文件。其他来源(如本文(提到在.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);
});
}
您可以在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>();
});
}
您的方法应该有效,但需要进行一些调整。
您创建的配置需要添加到DI容器中。这方面的文档在这里。
我在Azure功能和其他项目中也通过以下方式实现了这一点:
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IConfiguration>(provider => new ConfigurationBuilder()
.AddEnvironmentVariables()
.AddJsonFile("accountconstants.json", optional: true, reloadOnChange: true)
.Build());
}