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

C# ASP.NET Core에서 UseIISIntegration()의 역할과 사용법

모든 ASP.NET Core 애플리케이션에는 애플리케이션과 웹 서버의 역할을 수행하는 WebHost 객체가 반드시 필요합니다. 그리고 이 WebHost를 구성하고 생성하는 데 사용되는 것이 바로 WebHostBuilder입니다. 일반적으로 WebHostBuilder 설정 코드에서 UseKestrel()UseIISIntegration() 메서드를 자주 볼 수 있습니다.

각 메서드는 어떤 역할을 할까요?

UseKestrel() — 애플리케이션을 호스팅할 웹 서버로 Kestrel의 IServer 인터페이스를 등록합니다.

향후에는 Windows 전용 서버인 WebListener를 포함해 다른 옵션들도 제공될 수 있습니다.

UseIISIntegration() — IIS가 Kestrel 앞단에서 리버스 프록시(reverse proxy)로 동작한다는 사실을 ASP.NET에 알려주는 역할을 합니다.

이 메서드를 통해 Kestrel이 수신해야 할 포트, 전달 헤더(forwarding headers) 등 다양한 세부 설정이 지정됩니다.

예제 코드

public class Program{
    public static void Main(string[] args){
        var host = new WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseIISIntegration()
        .UseStartup()
        .Build();
        host.Run();
    }
}

IIS와 Kestrel의 프로세스 통신 구조

ASP.NET Core 2.2 버전까지는 ASP.NET Core 애플리케이션이 IIS에서 out-of-process 방식으로 호스팅되었습니다. 즉, 하나의 애플리케이션이 두 개의 프로세스로 나뉘어 실행되었습니다.

w3wp.exe — IIS 프로세스

dotnet.exe — ASP.NET Core 프로세스로, 이 안에서 Kestrel 웹 서버가 시작됩니다. 이는 곧 IIS와 Kestrel이 두 개의 프로세스 사이에서 서로 통신한다는 의미입니다.

바로 이러한 시나리오에서 UseIISIntegration()이 사용되는 것입니다.