Can someone clarify once and for all whether running IConfiguration’s .Build() more than once is ok or not? I see the following type of answer in many SO answers but I heard somewhere that you weren’t supposed to do this.
We already know that this type of code is generally not needed because of dependency injection but I’m referring to edge cases. The following code shows an example. I’ve seen another example of using something like this when building a 3rd party library. Will using something like this introduce bugs or not?
Logger logger = LogManager.GetCurrentClassLogger();
// Get url to webservice used for logging.
var c = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.Build();
// We use the common services URL to log to a central database.
var u = c[key: "MyCommonService:Url"] ?? throw new ArgumentNullException("MyCommonService:Url");
var url = new Uri(u);
LoggingHelper.Configure(url, c["Logging:LogLevel:Default"]);
try
{
var builder = WebApplication.CreateBuilder(args);
builder.Services.Configure<Config>(builder.Configuration.GetSection("AppSettings"));
builder.Services.AddSingleton<DataService>();
builder.Services.AddScoped<ToastService>();
builder.Logging.ClearProviders();
builder.Host.UseNLog();
...
etc
...
var app = builder.Build();