appsettings.json 세팅

.NET Core 애플리케이션에서 appsettings.jsonappsettings.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");