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)에서는 WebApplication의 builder.Environment 속성을 통해서도 동일한 IWebHostEnvironment 정보에 접근할 수 있습니다. 또한 파일 업로드 저장 경로 지정, 환경별 설정 분기 처리 등 실무에서 매우 자주 활용되는 인터페이스이므로, 경로 관련 기능을 구현할 때 하드코딩된 경로 대신 이 인터페이스를 사용하는 것이 좋습니다.