ASP.NET Core 환경별 분기 처리 — IsDevelopment() 메서드 활용법

  • 4 minutes to read

Chapter 1. 개요

ASP.NET Core 애플리케이션에서는 환경별(Development, Staging, Production) 로 코드를 분기할 수 있는 기능이 제공됩니다.
이를 통해 개발용 기능과 운영용 기능을 분리하여 안전하게 관리할 수 있습니다.

이 장에서는 ASP.NET Core의 모든 주요 프로젝트 유형:

  • MVC
  • Razor Pages
  • Blazor Server

에서 공통적으로 사용할 수 있는 환경 분기 방법을 다룹니다.

특히 대표적인 메서드인 IsDevelopment() 를 중심으로,
프로젝트 전반에 적용하는 방법을 기술합니다.


Chapter 2. ASP.NET Core 환경 개념

2.1 ASP.NET Core의 환경 (Environment)

ASP.NET Core 는 ASPNETCORE_ENVIRONMENT 라는 환경 변수를 사용하여 현재 애플리케이션이 어떤 환경에서 실행 중인지 구분합니다.

대표적인 환경 값:

  • Development : 개발 환경
  • Staging : 사전 검증용 스테이징 환경
  • Production : 실제 운영 환경

이 값은 앱 실행 시 자동으로 읽히며, 환경에 따라 서비스 구성이 달라지도록 만들 수 있습니다.

2.2 환경 값 지정 방법

  1. 로컬 개발 환경 (launchSettings.json)
{
  "profiles": {
    "YourProjectName": {
      "commandName": "Project",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}
  1. 운영 서버 환경 변수

서버의 환경 변수로 지정:

export ASPNETCORE_ENVIRONMENT=Production

Chapter 3. IWebHostEnvironment 주입

ASP.NET Core에서는 환경 정보를 가져오기 위해 IWebHostEnvironment 또는 IHostEnvironment 인터페이스를 사용합니다.

3.1 MVC / Razor Pages: _Layout.cshtml 또는 View 파일에서 사용

@inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment Env
@using Microsoft.Extensions.Hosting

3.2 Blazor Server: _Host.cshtml 에서 사용

@inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment Env
@using Microsoft.Extensions.Hosting

@using Microsoft.Extensions.Hosting 를 추가해야 IsDevelopment() 확장 메서드를 사용할 수 있습니다.


Chapter 4. IsDevelopment() 메서드 사용법

4.1 기본 사용법

환경에 따라 코드 또는 UI 요소를 분기합니다.

@if (Env.IsDevelopment())
{
    <p>이 콘텐츠는 개발 환경에서만 표시됩니다.</p>
}

4.2 다른 환경 메서드

IsDevelopment() 외에도 다양한 환경 메서드를 사용할 수 있습니다.

@if (Env.IsDevelopment())
{
    // 개발 환경
}
else if (Env.IsStaging())
{
    // 스테이징 환경
}
else if (Env.IsProduction())
{
    // 운영 환경
}

4.3 문자열 기반 직접 분기

환경 이름을 문자열로 비교할 수도 있습니다.

@if (Env.EnvironmentName == "Production")
{
    // 운영 환경
}

※ 문자열 비교는 오타 시 오류가 발생할 수 있으므로, IsDevelopment() 확장 메서드를 사용하는 것이 권장됩니다.


Chapter 5. 실제 사용 예시

5.1 개발용 메뉴 표시 (Blazor Server / MVC / Razor Pages 공통)

@if (Env.IsDevelopment())
{
    <li class="nav-item">
        <a class="nav-link nav-link-info" href="https://your-dev-tool-link" target="_blank">
            <span class="nav-icon oi oi-wrench" aria-hidden="true"></span> Dev Tools
        </a>
    </li>
}

5.2 개발용 스크립트 로딩

@if (Env.IsDevelopment())
{
    <script src="js/dev-only.js"></script>
}

5.3 운영 환경에서만 로딩

@if (Env.IsProduction())
{
    <script src="js/production-only.js"></script>
}

Chapter 6. 권장 사항 및 주의사항

  • IsDevelopment() 메서드는 개발 환경에서만 표시해야 하는 기능 또는 UI 를 처리할 때 사용합니다.
  • 민감한 정보 또는 테스트용 링크를 실수로 운영 환경에 노출하지 않도록 반드시 환경별 분기를 적용합니다.
  • 프로젝트 확장성 및 유지보수를 고려하여, 환경별 appsettings 파일 과 함께 사용하는 것을 추천합니다.
    • appsettings.Development.json
    • appsettings.Production.json

Chapter 7. 마무리

ASP.NET Core 의 IsDevelopment() 메서드는 MVC, Razor Pages, Blazor Server 모든 프로젝트에서 공통으로 사용할 수 있는 유용한 기능입니다.
환경에 따라 기능을 분기하여 개발 효율성을 높이고, 운영 안정성을 강화할 수 있습니다.

프로젝트 초반부터 적극적으로 활용하면, 개발 중에는 빠르게 기능을 테스트하고, 배포 시에는 안정된 상태로 전환할 수 있습니다.


Appendix. 빠른 참고

메서드 설명
IsDevelopment() 개발 환경인지 확인
IsStaging() 스테이징 환경인지 확인
IsProduction() 운영 환경인지 확인
Env.EnvironmentName == "환경명" 직접 문자열 비교
VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com