Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# ASP.NET Core의 IWebHostEnvironment 인터페이스란? 역할과 사용법 완벽 정리

IWebHostEnvironment는 애플리케이션이 현재 실행 중인 웹 호스팅 환경에 대한 정보를 제공하는 인터페이스입니다. 이를 통해 개발자는 애플리케이션의 루트 경로나 정적 파일 경로 같은 환경 정보를 코드 내에서 손쉽게 확인하고 활용할 수 있습니다.

IWebHostEnvironment 개요

IWebHostEnvironment 인터페이스는 Microsoft.AspNetCore.Hosting 네임스페이스에 속해 있으며, 컨트롤러에 종속성 주입(Dependency Injection)으로 전달받은 뒤 컨트롤러 전반에서 사용할 수 있습니다.

이 인터페이스가 제공하는 대표적인 속성은 다음과 같습니다.

  • WebRootPath − 웹에서 서비스 가능한 정적 콘텐츠(wwwroot 폴더)가 위치한 디렉터리의 절대 경로를 가져오거나 설정합니다.
  • WebRootFileProvider − WebRootPath를 가리키는 IFileProvider를 가져오거나 설정합니다.
  • ContentRootPath − 애플리케이션의 모든 파일(설정 파일, 뷰, 어셈블리 등)이 포함된 루트 디렉터리의 절대 경로를 가져오거나 설정합니다.
  • EnvironmentName − 애플리케이션이 실행 중인 환경 이름(예: Development, Staging, Production)을 나타냅니다.

사용 방법

IWebHostEnvironment를 사용하려면 먼저 아래 네임스페이스를 임포트해야 합니다.

using Microsoft.AspNetCore.Hosting;

다음 예제에서는 생성자를 통해 IWebHostEnvironment를 컨트롤러에 주입하고, 이를 private 필드에 할당한 뒤 Index 액션에서 WebRootPath와 ContentRootPath 값을 가져오는 과정을 보여줍니다.

예제 코드

public class HomeController : Controller
{
    private readonly IWebHostEnvironment _environment;

    public HomeController(IWebHostEnvironment environment)
    {
        _environment = environment;
    }

    public IActionResult Index()
    {
        // wwwroot 폴더의 절대 경로
        string wwwPath = _environment.WebRootPath;

        // 애플리케이션 루트 폴더의 절대 경로
        string contentPath = _environment.ContentRootPath;

        return View();
    }
}

참고 사항

.NET 6 이상의 최소 호스팅 모델(Minimal Hosting Model)에서는 WebApplicationbuilder.Environment 속성을 통해서도 동일한 IWebHostEnvironment 정보에 접근할 수 있습니다. 또한 파일 업로드 저장 경로 지정, 환경별 설정 분기 처리 등 실무에서 매우 자주 활용되는 인터페이스이므로, 경로 관련 기능을 구현할 때 하드코딩된 경로 대신 이 인터페이스를 사용하는 것이 좋습니다.