.NET Core 애플리케이션에서 appsettings.json
및 appsettings.Development.json
파일은 환경에 따라 구성 설정을 관리하기 위해 사용됩니다. 이 파일들은 환경별로 다른 설정 값을 쉽게 관리할 수 있도록 도와줍니다. 아래는 이 파일들이 어떻게 작동하는지에 대한 설명입니다.
1. appsettings.json
파일
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"ConnectionStrings": {
"DefaultConnection": "Server=myServer;Database=myDB;User Id=myUser;Password=myPassword;"
}
}
2. appsettings.Development.json
파일
이 파일은 개발 환경에서만 사용되는 설정 값을 정의합니다. 이 파일의 설정 값은 appsettings.json
파일의 설정 값을 덮어씁니다. 예를 들어, 개발 환경에서만 사용하는 데이터베이스 또는 로깅 설정을 정의할 수 있습니다.
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"Microsoft": "Debug",
"Microsoft.Hosting.Lifetime": "Debug"
}
},
"ConnectionStrings": {
"DefaultConnection": "Server=devServer;Database=devDB;User Id=devUser;Password=devPassword;"
}
}
3. 환경에 따라 설정 파일 로드
.NET Core 애플리케이션은 CreateHostBuilder
메서드에서 환경 설정 파일들을 로드합니다. 일반적으로 Program.cs
파일에 다음과 같은 코드가 있습니다:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
var env = hostingContext.HostingEnvironment;
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
config.AddEnvironmentVariables();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
위 코드에서 AddJsonFile
메서드를 통해 환경별 설정 파일을 로드합니다. env.EnvironmentName
은 현재 환경 이름을 가져오며, 이를 통해 해당 환경의 설정 파일(appsettings.Development.json
등)을 로드합니다.
4. 환경 설정
환경 설정은 여러 가지 방법으로 지정할 수 있습니다. 가장 일반적인 방법은 환경 변수를 사용하는 것입니다. 예를 들어, 개발 환경에서는 다음과 같이 설정할 수 있습니다:
export ASPNETCORE_ENVIRONMENT=Development
또는 Visual Studio에서는 프로젝트 속성에서 환경 변수를 설정할 수 있습니다.
이와 같이, .NET Core 애플리케이션은 기본 설정 파일(appsettings.json
)과 환경별 설정 파일(appsettings.Development.json
, appsettings.Production.json
등)을 통해 다양한 환경에서 유연하게 설정을 관리할 수 있습니다. 이를 통해 개발, 테스트, 운영 등 여러 환경에서 필요한 설정을 손쉽게 적용할 수 있습니다.
실전 수정
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseUrls("https://*:17000");
WebHost.CreateDefaultBuilder
를 사용하여 웹 호스트를 생성하는 경우에도 AddJsonFile
을 사용하여 환경 설정 파일을 추가할 수 있습니다. 이를 위해 ConfigureAppConfiguration
메서드를 호출하여 설정 파일을 구성하면 됩니다. 다음은 CreateWebHostBuilder
메서드를 업데이트하여 appsettings.json
및 환경별 설정 파일을 추가하는 방법을 보여줍니다:
사용 json 만 활성화 도는 둘다 사용
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, config) =>
{
var env = context.HostingEnvironment;
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
config.AddEnvironmentVariables();
})
.UseStartup<Startup>()
.UseUrls("https://*:17000");