Как считывать значения AppSettings из файла .json в ASP.NET Core
Для работы с настройками в вашем ASP.NET приложение, рекомендуется создавать экземпляр конфигурации только в классе запуска вашего приложения. Затем используйте шаблон параметров для доступа к отдельным настройкам. Допустим, у нас есть файл appsettings.json, который выглядит следующим образом:
{
"MyConfig": {
"ApplicationName": "MyApp",
"Version": "1.0.0"
}
}
И у нас есть объект POCO, представляющий конфигурацию:
public class MyConfig
{
public string ApplicationName { get; set; }
public int Version { get; set; }
}
Теперь мы создаем конфигурацию в 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();
}
}
Обратите внимание, что appsettings.json будет зарегистрирован по умолчанию в .NET Core 2.0. Мы также можем зарегистрировать appsettings.{Environment}.json
конфигурационный файл для каждой среды, если это необходимо.
Если мы хотим внедрить нашу конфигурацию в наши контроллеры, нам нужно будет зарегистрировать ее во время выполнения. Мы делаем это через Startup.ConfigureServices
:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
// Add functionality to inject IOptions
services.AddOptions();
// Add our Config object so it can be injected
services.Configure(Configuration.GetSection("MyConfig"));
}
И мы вводим его вот так:
public class HomeController : Controller
{
private readonly IOptions config;
public HomeController(IOptions config)
{
this.config = config;
}
// GET: //
public IActionResult Index() => View(config.Value);
}
Полный Startup
класс:
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
services.AddOptions();
// Add our Config object so it can be injected
services.Configure(Configuration.GetSection("MyConfig"));
}
}
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.