Configuration providers
A configuration provider is an implementation of IConfigurationProvider
that is created by a configuration source, which is an implementation of IConfigurationSource
. The configuration provider then reads the data from somewhere and provides it via Dictionary
.
To add a custom or third-party configuration provider to ASP.NET Core, you will need to call the Add
method on ConfigurationBuilder
and insert the configuration source. This is just an example:
Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.ConfigureAppConfiguration((builderContext, config) => { var env = builderContext.HostingEnvironment; config.SetBasePath(env.ContentRootPath); config.AddJsonFile( "appsettings.json", optional: false, reloadOnChange: true); config.AddJsonFile( $"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true); // add new configuration source config.Add(new MyCustomConfigurationSource { SourceConfig = //configure whatever source Optional = false, ReloadOnChange = true }); config.AddEnvironmentVariables(); }) .UseStartup<Startup>(); });
Usually, you would create an extension method to add the configuration source more easily:
config.AddMyCustomSource("source", optional: false, reloadOnChange: true);
A really detailed concrete example about how to create a custom configuration provider has been written by Andrew Lock. You can find this in the Further reading section of this chapter.