ASP.NET 응용 프로그램을 IIS 6.0에서 IIS 7.0으로 이동

Visual Studio 2010

업데이트: 2007년 11월

이 항목에서는 웹 응용 프로그램을 IIS(인터넷 정보 서비스) 6.0에서 IIS 7.0으로 이동하는 방법에 대해 설명합니다. IIS 7.0의 웹 응용 프로그램은 클래식 모드나 통합 모드를 사용하도록 구성할 수 있습니다. 클래식 모드에서는 ISAPI 확장을 통해 ASP.NET 런타임을 호출하여 이전 버전의 IIS와의 호환성을 유지합니다. 이 옵션을 사용하면 일반적으로 기존 응용 프로그램을 수정할 필요가 없거나 약간만 수정하면 됩니다.

IIS 7.0 통합 모드는 ASP.NET 요청 파이프라인과 IIS 핵심 요청 파이프라인을 통합하는 통합 요청 처리 파이프라인입니다. 통합 파이프라인에서는 향상된 성능을 제공하고 모듈 방식의 구성과 관리 기능을 제공하며 관리 코드 모듈을 통해 기존 IIS에 유연성을 더합니다. 예를 들어 웹 응용 프로그램의 App_Code 폴더에서 관리 코드 모듈을 정의하고 이를 등록하여 정적 파일에 대한 요청을 비롯한 모든 IIS 요청에 적용할 수 있습니다.

IIS 7.0 통합 모드를 사용하면 응용 프로그램의 Web.config 파일을 약간 변경해야 합니다. 응용 프로그램에서 IHttpModule 인터페이스를 구현하는 사용자 지정 모듈을 사용하는 경우 몇 가지 사항을 추가로 변경해야 할 수 있습니다.

IIS 7.0 통합 모드의 요청 처리 파이프라인에 대한 개요를 보려면 IIS 7.0의 ASP.NET 응용 프로그램 수명 주기 개요를 참조하십시오. IIS 7.0을 사용하는 경우 동일한 서버에서 응용 프로그램을 클래식 모드와 통합 모드로 나란히 실행할 수 있습니다. 클래식 모드와 통합 모드는 모두 .NET Framework 버전 2.0 및 이후 릴리스를 지원합니다. .NET Framework 버전 1.1은 클래식 모드에서만 지원됩니다. 이전 버전의 IIS에서 IIS 7.0으로 업그레이드하는 방법에 대한 자세한 내용은 Upgrading ASP.NET Applications to IIS 7.0: Differences between IIS 7.0 Integrated Mode and Classic mode를 참조하십시오.

Bb515251.alert_note(ko-kr,VS.100).gif참고:

이 항목의 정보는 웹 응용 프로그램을 IIS 5.x에서 IIS 7.0으로 이동하는 경우에 참조할 수 있습니다. 그러나 여기서 설명하지 않은 사항을 추가로 변경해야 할 수도 있습니다. 자세한 내용은 다음을 참조하십시오.

이 항목에는 다음과 같은 단원이 포함되어 있습니다.

ASP.NET 웹 응용 프로그램을 IIS 7.0 통합 모드로 이동할 경우 Web.config 파일을 업데이트해야 합니다. IIS 7.0에서는 Web.config 파일을 관리하는 방법과 Web.config 파일에서 저장할 수 있는 설정 유형이 변경되었습니다. 새로운 설정은 system.webServer라는 새 구성 섹션에 있습니다.

IIS 6.0의 경우 ASP.NET MMC 스냅인에서 ASP.NET을 구성하기 위한 IIS 관련 관리 기능을 제공합니다. 자세한 내용은 연습: IIS 6.0에서 MMC를 사용하여 ASP.NET 응용 프로그램 구성을 참조하십시오.

IIS 7.0에서는 ASP.NET 응용 프로그램의 관리가 IIS 관리와 더욱 밀접하게 통합되어 별도의 스냅인이 없습니다. 대신 모든 IIS 및 ASP.NET 구성을 IIS 관리자를 사용하여 수행합니다. IIS 7.0 구성 정보는 .NET Framework 구성 시스템을 기반으로 하므로 IIS 7.0에서 실행되는 응용 프로그램의 Web.config 파일에는 웹 서버 및 ASP.NET 구성 설정이 모두 포함됩니다. 예를 들어 IIS 7.0에서 실행되는 ASP.NET 응용 프로그램의 Web.config 파일에서는 브라우저에서 특정 파일을 요청하지 않을 때 반환할 기본 파일을 지정할 수 있습니다. IIS 6.0 이전 버전에서는 이러한 설정이 IIS 메타베이스에서 유지 관리되었습니다.

Web.config 파일 편집

IIS 7.0에서 실행되는 웹 응용 프로그램의 Web.config 파일을 다음과 같은 방법으로 변경할 수 있습니다.

  • Visual Studio 또는 Visual Web Developer를 사용하거나 텍스트 편집기 프로그램을 사용하여 Web.config 파일을 직접 편집

  • IIS 관리자 사용. 자세한 내용은 Internet Information Services (IIS) Manager를 참조하십시오.

  • ASP.NET 웹 사이트 관리 도구 사용. 자세한 내용은 ASP.NET 웹 사이트 관리 도구를 참조하십시오.

    Bb515251.alert_note(ko-kr,VS.100).gif참고:

    웹 사이트 관리 도구에서 변경한 내용은 system.webServer 요소의 자식 구성 요소에 영향을 주지 않습니다.

  • IIS 7.0 명령줄 도구(Appcmd.exe) 사용. 이 유틸리티를 사용하면 명령줄에서 IIS 구성 설정과 웹 응용 프로그램 구성 설정을 지정할 수 있습니다. 자세한 내용은 IIS 7.0 Command-Line Tool을 참조하십시오.

system.webServer 섹션

Web.config 파일의 system.webServer 구성 섹션에서는 웹 응용 프로그램에 적용되는 IIS 7.0 설정을 지정합니다. system.WebServer 섹션은 configuration 요소의 자식입니다. 자세한 내용은 IIS 7.0: system.webServer Section Group (IIS Settings Schema)을 참조하십시오.

system.WebServer 구성 그룹에서 설정할 수 있는 웹 서버 설정의 예는 다음과 같습니다.

  • 요청에 특정 리소스가 포함되어 있지 않은 경우 웹 서버에서 클라이언트에 반환하는 기본 문서(defaultDocument 요소)

  • 응답의 압축 설정(httpCompression 요소)

  • 사용자 지정 헤더(httpProtocol 섹션의 customHeaders 요소)

  • 모듈(modules 요소)

  • 처리기(handlers 요소)

일부 설정은 IIS 7.0 통합 모드에만 적용되고 클래식 모드에는 적용되지 않습니다. 예를 들어 응용 프로그램이 클래식 모드로 실행되고 있는 경우 Web.config 파일의 system.WebServer 섹션에서 지정한 관리 코드 모듈과 처리기는 무시됩니다. 대신 이전 버전의 IIS에서처럼 system.web 섹션의 httpModuleshttpHandlers 요소를 사용하여 관리 코드 모듈과 처리기를 정의해야 합니다.

system.webServer 구성 섹션을 사용하는 예제는 방법: IIS 7.0에 대해 <system.webServer> 섹션 구성을 참조하십시오.

일반적으로 웹 응용 프로그램을 IIS 6.0에서 IIS 7.0 클래식 모드로 이동하려면 클래식 모드에서 실행되고 있는 응용 프로그램 풀에 응용 프로그램을 넣으면 됩니다. 예를 들어 에서 IIS 7.0을 설치하면 기본적으로 웹 서버는 통합 모드에서 작동하도록 구성됩니다. 또한 DefaultAppPool이라는 기본 응용 프로그램 풀에서 실행되도록 구성됩니다. 웹 응용 프로그램을 클래식 모드에서 실행하려면 Classic.NETAppPool 응용 프로그램을 사용하거나 클래식 모드에서 실행되도록 구성된 새 응용 프로그램 풀을 만듭니다. 응용 프로그램 풀을 만드는 방법에 대한 자세한 내용은 Create an Application Pool을 참조하십시오.

클래식 모드로 실행되는 응용 프로그램에서 IHttpModule 인터페이스를 구현하는 모든 사용자 지정 모듈은 ASP.NET 런타임에서 처리하는 파이프라인 요청에 대해서만 알림을 받습니다. 예를 들어 .aspx 페이지의 요청에 대해 알림을 받습니다. IIS 6.0에서는 클래식 모드의 응용 프로그램 수명 주기가 ASP.NET의 수명 주기와 동일합니다. 자세한 내용은 IIS 5.0 및 6.0의 ASP.NET 응용 프로그램 수명 주기 개요를 참조하십시오.

클래식 모드에서 실행되는 응용 프로그램에 IIS의 사용자 지정 확장을 처리할 스크립트 맵이 필요한 처리기가 포함되어 있는 경우 이 처리기를 httpHandler 그룹과 handler 그룹 모두에 등록해야 합니다. handler 요소에서 modulesscriptProcessor 특성을 지정하여 사용자 지정 파일 이름 확장명을 ASP.NET ISAPI 확장(Aspnet_isapi.dll)에 매핑합니다. 이러한 특성에서는 처리기를 정의하는 모듈이 ISAPI 확장임을 지정하고 해당 확장의 경로를 지정합니다. 이러한 방법을 통해 클래식 모드의 IIS 7.0에서 이전 버전의 IIS와의 호환성을 제공합니다. 그러나 응용 프로그램을 통합 모드에서 실행하는 경우에는 modulesscriptProcessor 특성을 제거해야 합니다. 자세한 내용은 방법: IIS에서 HTTP 처리기 확장 구성을 참조하십시오.

웹 응용 프로그램을 IIS 6.0에서 클래식 모드로 이동하는 경우 아무것도 변경하지 않으면 통합 모드에서 작동하지 않을 수도 있습니다. 응용 프로그램을 클래식 모드에서 통합 모드로 변경하고 사용자 지정 모듈과 처리기를 변경하는 경우 응용 프로그램이 통합 모드에서 제대로 실행되려면 몇 가지 사항을 추가로 변경해야 할 수 있습니다. 이 항목의 다음 단원에서는 응용 프로그램을 IIS 7.0 통합 모드로 이동하는 방법에 대해 설명합니다.

사용자 지정 모듈이나 처리기를 포함하지 않는 응용 프로그램은 일반적으로 변경하지 않고도 IIS 7.0에서 통합 모드로 작동합니다. 사용자 지정 모듈이나 처리기를 사용하는 웹 응용 프로그램의 경우에는 통합 모드에서 실행될 수 있으려면 다음과 같은 단계를 수행해야 합니다.

IHttpModule 인터페이스를 구현하는 모듈은 .NET Framework를 사용하여 빌드되므로 관리 코드 모듈이라고도 합니다. 관리 코드 모듈은 서버 수준이나 응용 프로그램 수준에서 등록할 수 있습니다. 네이티브 코드 모듈은 서버 수준에서만 등록하는 DLL(비관리 코드)입니다. 세션 상태 및 폼 인증과 같은 핵심 ASP.NET 기능은 통합 모드에서 관리 모듈로 구현됩니다.

응용 프로그램을 클래식 모드에서 통합 모드로 이동하는 경우 클래식 모드의 사용자 지정 모듈 및 처리기 등록을 그대로 유지하거나 제거할 수 있습니다. 클래식 모드에서 사용되는 httpModuleshttpHandlers 등록을 제거하지 않은 경우 오류를 방지하려면 validation 요소의 validateIntegratedModeConfiguration 특성을 false로 설정해야 합니다. validation 요소는 system.webServer 요소의 자식 요소입니다. 자세한 내용은 ASP.NET Integration with IIS 7.0의 "Disabling the migration message" 단원을 참조하십시오.

통합 모드에서 사용할 수 있도록 Web.config 파일 마이그레이션

모듈이나 처리기를 응용 프로그램 수준에서 정의하는 경우 모듈이나 처리기가 자동으로 호출되지 않습니다. 이러한 모듈이나 처리기에는 Bin 폴더의 어셈블리에서 정의한 것이나 App_Code 폴더에서 소스 코드로 정의한 것 및 Web.config 파일의 system.webServer 섹션에 등록하지 않은 것이 포함됩니다. 이러한 모듈이나 처리기가 통합 모드 요청 파이프라인에 참여하게 하려면 다음 방법 중 하나를 사용하여 모듈이나 처리기를 등록해야 합니다.

통합 모드에서 사용하는 클래스 및 속성

IIS 7.0 통합 모드의 응용 프로그램과 .NET Framework 버전 3.0 이상을 사용하는 경우 클래식 모드에서는 사용할 수 없는 다음과 같은 클래스와 멤버를 사용할 수 있습니다.

표시: