In zwei Projekten (eine .NET Core Web API und ein .NET Core WindowsService) verwende ich appsettings.json für die Konfiguration.Wie funktioniert reloadOnChange von Microsoft.Extensions.Configuration für appsettings.json
var configuration = new ConfigurationBuilder()
.SetBasePath(System.IO.Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
In den beiden habe ich die reloadOnChange auf true gesetzt und dessen Verwendung als IOptions
über Dependency Injection injiziert. Innerhalb der Web-API in die Controller-Klassen und innerhalb des Service in die Klassen, die die Einstellungen verwenden.
Leider erfahre ich, dass die Werte nicht ändern, wenn die appsettings.json ändert.
Auf der Web-API habe ich einen Controller erstellt, um nur einen String-Wert aus der Konfig zurückgeben und dies bleibt gleich wie beim Start.
Also meine Fragen:
- Wer weiß, ob das aus der Box funktionieren soll (zumindest in dem Web-api)?
- Alles, was ich tun muss, dass es funktioniert?
Wie registrieren Sie Ihre Optionen? Verwenden Sie 'services.Configure (Confiugration.GetSection (...))'? oder verwenden Sie '.Bind()'? –
Tseng
In beiden Fällen services.Configure (Confiugration.GetSection (. ..)) –
monty
Normalerweise funktioniert es über Änderungstoken, die registriert sind, wenn Sie die obige Überladung aufrufen (https://github.com/aspnet/Options /blob/rel/1.1.0/src/Microsoft.Extensions.Options.ConfigurationExtensions/OptionsConfigurationServiceCollectionExtensions.cs#L35-L36) und https://github.com/aspnet/Options/blob/rel/1.1.0/src/ Microsoft.Extensions.Options.ConfigurationExtensions/ConfigureFromConfigurationOptions.cs triggert eine Rebind, wenn das Token ausgelöst wird – Tseng