Ayant du mal à comprendre comment lire les valeurs appsettings.json en dehors de startup.cs. Ce que je voudrais faire, par exemple, est dans le _Layout.cshtml, ajoutez le nom du site dans la configuration:
Par exemple:
ViewData["SiteName"] = Configuration.GetValue<string>("SiteSettings:SiteName");
Ou encore mieux:
public class GlobalVars {
public static string SiteName => Configuration.GetValue<string>("SiteSettings:SiteName");
}
Voici mon code jusqu'à présent:
[appsettings.json]
"SiteSettings": {
"SiteName": "MySiteName"
}
[startup.cs]
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
var siteName = Configuration.GetValue<string>("SiteSettings:SiteName");
}
public IConfigurationRoot Configuration { get; }
Peut-être que je lis mal les documents, mais je n'arrive pas à exposer l'objet Configuration en dehors de la classe Startup.
Dans votre Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IConfiguration>(Configuration);
}
puis dans votre contrôleur:
public class ValuesController : Controller
{
IConfiguration configuration;
public ValuesController(IConfiguration configuration)
{
this.configuration = configuration;
}
}