https://github.com/vmandic/custom-iconfiguration-startup-injection
This is a sample #dotnetcore project demonstrating on how to modify the IConfiguration injected in generic host Startup.cs CTOR.
https://github.com/vmandic/custom-iconfiguration-startup-injection
configuration csharp dependency-injection dotnet dotnetcore webapi webapp
Last synced: 2 months ago
JSON representation
This is a sample #dotnetcore project demonstrating on how to modify the IConfiguration injected in generic host Startup.cs CTOR.
- Host: GitHub
- URL: https://github.com/vmandic/custom-iconfiguration-startup-injection
- Owner: vmandic
- Created: 2020-12-26T23:21:30.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2020-12-26T23:25:37.000Z (over 5 years ago)
- Last Synced: 2025-10-30T22:36:56.475Z (8 months ago)
- Topics: configuration, csharp, dependency-injection, dotnet, dotnetcore, webapi, webapp
- Language: C#
- Homepage:
- Size: 8.79 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# How to modify the IConfiguration injected into Startup constructor
This is a sample #dotnetcore project demonstrating on how to modify the IConfiguration injected in generic host Startup.cs CTOR.
The core thing to do is to call the `ConfigureAppConfiguration` in generic host construction as followed:
```csharp
public class Program
{
private static IConfigurationBuilder ConfigurationBuilder;
public static async Task Main(string[] args)
{
ConfigurationBuilder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional : false)
.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional : true)
.AddJsonFile("appsettings.localhost.json", optional : true)
.AddEnvironmentVariables();
await CreateHostBuilder(args).Build().RunAsync();
}
public static IHostBuilder CreateHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.UseContentRoot(Directory.GetCurrentDirectory())
.ConfigureAppConfiguration(configBuilder =>
{
Console.WriteLine("ConfigureAppConfiguration called...");
// NOTE: this does not work, we will have to reassign one by one in foreach below
//configBuilder = ConfigurationBuilder;
// NOTE: clear existing stack built by CreateDefaultBuilder method
configBuilder.Sources.Clear();
foreach (var configSource in ConfigurationBuilder.Sources)
{
configBuilder.Add(configSource);
}
})
.ConfigureWebHostDefaults(webBuilder =>
webBuilder.UseStartup());
}
}
```