Cela a eu quelques rebondissements. J'ai modifié cette réponse pour être à jour avec ASP.NET Core 2.0 (au 26/02/2018).
Ceci est principalement tiré de la documentation officielle :
Pour travailler avec les paramètres de votre application ASP.NET, il est recommandé d'instancier uniquement un Configuration
dans la Startup
classe de votre application . Ensuite, utilisez le modèle Options pour accéder aux paramètres individuels. Disons que nous avons un appsettings.json
fichier qui ressemble à ceci:
{
"MyConfig": {
"ApplicationName": "MyApp",
"Version": "1.0.0"
}
}
Et nous avons un objet POCO représentant la configuration:
public class MyConfig
{
public string ApplicationName { get; set; }
public int Version { get; set; }
}
Maintenant, nous construisons la configuration dans 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();
}
}
Notez que appsettings.json
sera enregistré par défaut dans .NET Core 2.0. Nous pouvons également enregistrer unappsettings.{Environment}.json
fichier de configuration par environnement si nécessaire.
Si nous voulons injecter notre configuration dans nos contrôleurs, nous devons l'enregistrer avec le runtime. Nous le faisons via 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"));
}
Et nous l'injectons comme ceci:
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);
}
La Startup
classe complète :
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"));
}
}