Dies hat ein paar Drehungen und Wendungen gehabt. Ich habe diese Antwort so geändert, dass sie mit ASP.NET Core 2.0 (Stand: 26/02/2018) auf dem neuesten Stand ist.
Dies ist meistens der offiziellen Dokumentation entnommen :
Um mit Einstellungen in Ihrer ASP.NET-Anwendung zu arbeiten, wird empfohlen, nur a Configuration
in der Startup
Klasse Ihrer Anwendung zu instanziieren . Verwenden Sie dann das Optionsmuster, um auf einzelne Einstellungen zuzugreifen. Nehmen wir an, wir haben eine appsettings.json
Datei, die so aussieht:
{
"MyConfig": {
"ApplicationName": "MyApp",
"Version": "1.0.0"
}
}
Und wir haben ein POCO-Objekt, das die Konfiguration darstellt:
public class MyConfig
{
public string ApplicationName { get; set; }
public int Version { get; set; }
}
Jetzt bauen wir die Konfiguration in Startup.cs
:
public class Startup
{
public IConfigurationRoot Configuration { get; set; }
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Configuration = builder.Build();
}
}
Beachten Sie, dass appsettings.json
dies standardmäßig in .NET Core 2.0 registriert wird . Bei Bedarf können wir auch eine appsettings.{Environment}.json
Konfigurationsdatei pro Umgebung registrieren .
Wenn wir unsere Konfiguration in unsere Controller einfügen möchten, müssen wir sie bei der Laufzeit registrieren. Wir tun dies über Startup.ConfigureServices
:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
// Add functionality to inject IOptions<T>
services.AddOptions();
// Add our Config object so it can be injected
services.Configure<MyConfig>(Configuration.GetSection("MyConfig"));
}
Und wir injizieren es so:
public class HomeController : Controller
{
private readonly IOptions<MyConfig> config;
public HomeController(IOptions<MyConfig> config)
{
this.config = config;
}
// GET: /<controller>/
public IActionResult Index() => View(config.Value);
}
Die ganze Startup
Klasse:
public class Startup
{
public IConfigurationRoot Configuration { get; set; }
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Configuration = builder.Build();
}
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
// Add functionality to inject IOptions<T>
services.AddOptions();
// Add our Config object so it can be injected
services.Configure<MyConfig>(Configuration.GetSection("MyConfig"));
}
}