Це мало кілька поворотів. Я змінив цю відповідь, щоб бути в курсі ASP.NET Core 2.0 (станом на 26.02.2018).
Це в основному взято з офіційної документації :
Для роботи з налаштуваннями у вашій програмі ASP.NET рекомендується лише інстанціювати клас a Configuration
у вашому додатку Startup
. Потім скористайтеся шаблоном Параметри для доступу до окремих налаштувань. Скажімо, у нас є 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<T>
services.AddOptions();
// Add our Config object so it can be injected
services.Configure<MyConfig>(Configuration.GetSection("MyConfig"));
}
І ми вводимо його так:
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);
}
Повний 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<T>
services.AddOptions();
// Add our Config object so it can be injected
services.Configure<MyConfig>(Configuration.GetSection("MyConfig"));
}
}