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.