이것은 약간의 꼬임이있었습니다. 이 답변을 ASP.NET Core 2.0 (2018 년 2 월 26 일 현재)으로 최신으로 수정했습니다 .
이것은 대부분 공식 문서 에서 가져온 것입니다 .
ASP.NET 응용 프로그램에서 설정 작업을하려면 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 코어 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"));
}
}