Erweitert man die appsettings.json , so möchte man natürlich bequem auf die Einstellungen zugreifen wie bei der Default-Konfiguration:
public IConfiguration Configuration { get; } .... ... Configuration.GetConnectionString( "DatenbankKennung" ); ...
Die Konfigurationsdatei selbst:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "ConnectionStrings": { "InternalDatabase" : "Host=localhost;Database=DATABASENAME;username=DATABASEUSER;password=PASSWORD!!;" }, "AllowedHosts": "*", "UserBackend":{ "Openssl" : "/usr/bin/openssl", "CaPath" : "/var/deincaname/", "InternalBackend" : false, "Ads": { "Server" : "localhost", "BaseDn" : "local", "AllowUserCert" : "SomeAdGroup", "AllowEmailCert" : "AnotherAdGroup", "AllowCryptCert" : "AntherAnotherAdGroup:D" }, "___comment1" : "dieser Parameter wird nicht mit aufgenommen ;)", "___comment2" : "2. Object innerhalb der UserBackend-Struktur....", "Database":{ "Server" : "localhost", "DbName" : "dbname", "User" : "dbuser", "Password" : "dbpass" } } }
public class UserBackend
{
public string Openssl { get; set; }
public string CaPath { get; set; }
public Ads Ads { get; set; }
public Database Database { get; set; }
public bool InternalBackend { get; set; }
public bool CheckConfiguration( )
{
return false;
}
}
public abstract class AllowCertQuery
{
public string AllowUserCert { get; set; }
public string AllowEmailCert { get; set; }
public string AllowCryptCert { get; set; }
}
public class Ads : AllowCertQuery
{
public string Server { get; set; }
public string BaseDn { get; set; }
}
public class Database : AllowCertQuery
{
public string Server { get; set; }
public string DbName { get; set; }
public string User { get; set; }
public string Password { get; set; }
}
So: Noch schnell die Konfiguration lesen und bereitstellen ;)
public UserBackend userBackend { get; private set; } public void ConfigureServices( IServiceCollection services ) { //appsetting.json einlesen und parsen lassen :) var config = new ConfigurationBuilder( ) .SetBasePath( AppDomain.CurrentDomain.BaseDirectory ) .AddJsonFile( "appsettings.json" ).Build( ); //Die Sektion UserBackend rausfummeln... var section = config.GetSection( nameof( SuperCA.Configuration.UserBackend ) ); //Die Sektion mit json-parser in ein Objekt überführen ;) UserBackend userBackend = section.Get<UserBackend>( ); //some stuff zBsp. die Konfiguration prüfen.. kommt natürlich immer FALSE if( !userBackend.CheckConfiguration( ) ) { _logger.LogError("UserBackend-Service configuration has some errors"); } //auch sehr angenehm ist, dass man gleich die neue Konfiguration für DI (Dependency Injection) bekannt macht services.AddSingleton<UserBackend>( userBackend ); }