다음을 통해 공유


애플리케이션 풀 <추가 추가>

개요

<add> 요소의 <applicationPools> 요소는 IIS 7 이상 애플리케이션 풀에 대한 구성 설정을 제어합니다. IIS 서버에서 실행하려는 각 애플리케이션 풀에 대한 ApplicationHost.config 파일에 요소를 만듭니 <add> 다.

요소에는 <add> 파이프라인 처리 모드를 구성하는 특성 및 자식 요소와 들어오는 요청에 대해 애플리케이션 풀에서 작업자가 처리하는 .NET Framework 버전이 포함될 수 있습니다. 이 요소에는 애플리케이션 풀 ID, 성능 및 상태 및 재활용 애플리케이션 풀 설정을 구성하는 자식 요소도 포함되어 있습니다.

IIS 7 이상에서 새 애플리케이션 풀을 만들 때 최소한 애플리케이션 풀에 고유한 이름을 할당해야 합니다. 애플리케이션 풀을 사용하는 애플리케이션에 필요한 다른 모든 속성을 구성합니다.

IIS 7.5 이상의 새로운 기능

IIS 7.5부터 요소의 managedRuntimeLoader, CLRConfigFilestartMode 특성을 사용하여 자동으로 시작되도록 애플리케이션을 <add> 구성할 수 있습니다. 이러한 특성은 각각 애플리케이션에 런타임 로드를 제공하는 관리되는 DLL의 이름, 애플리케이션에 대한 공용 언어 런타임 구성 파일 및 애플리케이션의 시작 유형을 구성합니다.

또한 IIS 7.5 이상의 새로운 기능은 요소의 <processModel>identityType 특성에 대한 새 ApplicationPoolIdentity 형식입니다. 이 새 ID 형식은 이제 애플리케이션의 기본 프로세스 ID이며 특정 애플리케이션 풀에 대한 액세스를 허용하도록 콘텐츠 영역에 대한 보안을 설정할 수 있습니다. 이렇게 하려면 "IIS AppPool\DefaultAppPool"와 같은 구문을 사용하여 애플리케이션 풀의 이름을 사용하여 보안을 설정합니다. 이 ID는 동적으로 생성되므로 서버의 노출 영역이 크게 줄어듭니다.

호환성

버전 참고
IIS 10.0 <add> 요소가 IIS 10.0에서 수정되지 않았습니다.
IIS 8.5 <add> 요소가 IIS 8.5에서 수정되지 않았습니다.
IIS 8.0 특성의 managedRuntimeVersion 기본값이 로 변경 ""되고 v4.0 에 대한 managedRuntimeVersion값으로 추가되었습니다.
IIS 7.5 <add> 요소의 요소는 애플리케이션을 <applicationPools> 미리 로드할 수 있는 특성을 포함하도록 IIS 7.5에서 업데이트되었습니다.
IIS 7.0 <add> 컬렉션의 <applicationPools> 요소는 IIS 7.0에서 도입되었습니다.
IIS 6.0 컬렉션은 <applicationPools> IIS 6.0 IIsApplicationPools 메타베이스 속성의 일부를 대체합니다.

설치 프로그램

컬렉션은 <applicationPools> IIS 7 이상의 기본 설치에 포함되어 있습니다.

방법

새 애플리케이션 풀을 만드는 방법

  1. IIS(인터넷 정보 서비스) 관리자를 엽니다.

    • Windows Server 2012 또는 Windows Server 2012 R2를 사용하는 경우:

      • 작업 표시줄에서 서버 관리자 클릭하고 도구를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
    • Windows 8 또는 Windows 8.1 사용하는 경우:

      • Windows 키를 누른 채로 문자 X를 누른 다음 제어판 클릭합니다.
      • 관리 도구를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
    • Windows Server 2008 또는 Windows Server 2008 R2를 사용하는 경우:

      • 작업 표시줄에서 시작을 클릭하고 관리 도구를 가리킨 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
    • Windows Vista 또는 Windows 7을 사용하는 경우:

      • 작업 표시줄에서 시작을 클릭한 다음 제어판 클릭합니다.
      • 관리 도구를 두 번 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
  2. 연결 창에서 서버 이름을 확장한 다음 애플리케이션 풀을 클릭합니다.

  3. 작업 창에서 애플리케이션 풀 추가...를 클릭합니다.

  4. 애플리케이션 풀 추가 대화 상자에서 이름: 상자에 애플리케이션 풀의 이름을 입력합니다. .NET Framework 버전: 드롭다운 목록에서 사이트 또는 애플리케이션이 사용하는 .NET Framework 버전을 선택하고 관리형 파이프라인 모드: 드롭다운 목록에서 통합 또는 클래식을 선택한 다음 확인을 클릭합니다.
    이름, dot NET Framework 버전 및 관리형 파이프라인 모드에 대한 필드가 있는 애플리케이션 풀 추가 대화 상자의 스크린샷

기존 사이트 또는 애플리케이션에 대한 애플리케이션 풀을 구성하는 방법

  1. 연결 창에서 사이트를 확장한 다음 애플리케이션 풀에 추가할 웹 사이트 또는 애플리케이션으로 이동합니다.
  2. 작업 창에서 고급 설정...을 클릭합니다.
  3. 고급 설정 대화 상자의 일반 섹션에서 애플리케이션 풀 항목을 클릭한 다음 타원 단추를 클릭합니다.
    애플리케이션 풀이 강조 표시된 고급 설정 대화 상자를 보여 주는 스크린샷
  4. 애플리케이션 풀 선택 대화 상자의 애플리케이션 풀: 드롭다운 상자에서 애플리케이션 풀을 선택하고 확인을 클릭한 다음 확인을 다시 클릭합니다.
    애플리케이션 풀 드롭다운 상자에서 선택한 Contoso를 보여 주는 애플리케이션 풀 선택 대화 상자의 스크린샷

구성

<add> 컬렉션의 <applicationPools> 요소는 ApplicationHost.config 파일의 서버 수준에서 구성할 수 있습니다.

특성

attribute Description
autoStart 선택적 부울 특성입니다.

true이면 W3SVC(World Wide Web Publishing Service)에 애플리케이션 풀을 만들 때 또는 IIS가 시작될 때 자동으로 시작되어야 임을 나타냅니다.

기본값은 true입니다.
CLRConfigFile 선택적 문자열 값입니다.

애플리케이션 풀에 대한 .NET 구성 파일을 지정합니다.

참고: 이 특성은 IIS 7.5에 추가되었습니다.

기본값은 없습니다.
enable32BitAppOnWin64 선택적 부울 특성입니다.

true이면 64비트 버전의 Windows를 실행하는 컴퓨터에서 32비트 애플리케이션을 실행할 수 있습니다.

기본값은 false입니다.
enableConfigurationOverride 선택적 부울 특성입니다.

true이면 Web.config 파일의 위임된 설정이 이 애플리케이션 풀 내의 애플리케이션에 대해 처리됨을 나타냅니다. false이면 이 애플리케이션 풀에 대해 Web.config 파일의 모든 설정이 무시됩니다.

기본값은 true입니다.
managedPipelineMode 선택적 열거형 특성입니다.

관리되는 콘텐츠에 대한 요청을 처리하는 데 사용되는 요청 처리 모드를 지정합니다.

managedPipelineMode 특성은 다음과 같은 가능한 값 중 하나일 수 있습니다.
Description
Classic 애플리케이션 풀은 별도의 IIS 및 ASP.NET 요청 처리 파이프라인을 사용하도록 지정합니다. 이 파이프라인은 ASP.NET 1.1 애플리케이션에서 작동하며 통합 모드에서 작동하지 않는 ASP.NET 2.0 이상 애플리케이션에서 작동합니다.

숫자 값은 입니다 1.
Integrated 애플리케이션 풀이 ASP.NET 2.0 이상 애플리케이션에서만 작동하는 통합 IIS 및 ASP.NET 요청 처리 파이프라인을 사용하도록 지정합니다.

숫자 값은 입니다 0.
기본값은 Integrated입니다.
managedRuntimeLoader 선택적 문자열 특성입니다.

애플리케이션 풀을 미리 로드하는 데 사용할 관리되는 로더를 지정합니다.

참고: 이 특성은 IIS 7.5에 추가되었습니다.

기본값은 webengine4.dll.
managedRuntimeVersion 선택적 문자열 특성입니다.

애플리케이션 풀에서 사용할 CLR 버전을 지정합니다.

managedRuntimeVersion 특성은 다음과 같은 가능한 값 중 하나일 수 있습니다.
Description
v1.1 애플리케이션 풀에서 CLR 버전 1.1을 사용하도록 지정합니다.
v2.0 애플리케이션 풀에서 2.0, 3.0 또는 3.5 버전을 .NET Framework 수 있는 CLR 버전 2.0을 사용하도록 지정합니다.
v4.0 애플리케이션 풀이 CLR 버전 4.0을 사용하도록 지정합니다. 이 버전은 버전 4.0 또는 4.5를 .NET Framework 수 있습니다.
기본값은 ""입니다.
name 필수 문자열 특성입니다.

서버의 애플리케이션 풀에 대한 고유한 이름을 지정합니다.
passAnonymousToken 선택적 부울 특성입니다.

true이면 WAS(Windows Process Activation Service)가 기본 제공 IUSR 익명 사용자 계정에 대한 토큰을 만들어 익명 인증 모듈에 전달합니다. 익명 인증 모듈은 토큰을 사용하여 기본 제공 계정을 가장합니다. PassAnonymousTokenfalse이면 토큰이 전달되지 않습니다.

참고: IUSR 익명 사용자 계정은 IIS_MachineName 익명 계정을 대체합니다. IUSR 계정은 IIS 또는 다른 애플리케이션에서 사용할 수 있습니다. 설치하는 동안 할당된 권한이 없습니다.

기본값은 true입니다.
queueLength 선택적 uint 특성입니다.

향후 요청을 거부하기 전에 애플리케이션 풀에 대해 큐에 대기할 요청 수를 HTTP.sys 나타냅니다. 기본값은 1000입니다.

이 속성에 대해 설정된 값을 초과하면 IIS는 503 오류와 함께 후속 요청을 거부합니다. loadBalancerCapabilities 설정이 true이면 503이 있는 요청을 거부하는 대신 연결이 닫힙니다. loadBalancerCapabilities에 대한 자세한 내용은 애플리케이션 풀에 대한 오류 설정을 참조하세요.
startMode 선택적 열거형 값입니다.

애플리케이션 풀의 시작 유형을 지정합니다.

참고: 이 특성은 IIS 7.5에 추가되었습니다.

startMode 특성은 다음과 같은 가능한 값 중 하나일 수 있습니다.
Description
AlwaysRunning WAS(Windows Process Activation Service)가 항상 애플리케이션 풀을 시작하게 지정합니다. 이 동작을 사용하면 애플리케이션이 HTTP 요청을 처리하기 전에 운영 환경을 로드할 수 있으므로 애플리케이션에 대한 초기 HTTP 요청에 대한 시작 처리가 줄어듭니다.

숫자 값은 입니다 1.
OnDemand 애플리케이션 풀에서 호스트되는 애플리케이션에 대한 HTTP 요청이 수행될 때 WAS(Windows Process Activation Service)가 애플리케이션 풀을 시작하게 지정합니다. 이 동작은 이전 버전의 IIS에서 WAS 동작과 유사합니다.

숫자 값은 입니다 0.
기본값은 OnDemand입니다.

자식 요소

요소 Description
cpu CPU 선호도 및 CPU 작업을 구성합니다.
environmentVariables 작업자 프로세스에 전달할 환경 변수 컬렉션을 구성합니다.
failure 애플리케이션 풀이 실패할 때 수행할 작업을 구성합니다.
processModel 애플리케이션 풀에 대한 프로세스 관리 특성을 구성합니다.
recycling 애플리케이션 풀 재활용을 구성합니다.

구성 샘플

다음 구성 샘플에서는 애플리케이션 풀 <add> 요소를 사용하여 Contoso라는 새 애플리케이션 풀을 만듭니다. 요소는 <recycling> 애플리케이션 풀 다시 시작에 대한 로깅을 구성하고, <periodicRestart> 요소는 애플리케이션 풀이 다시 시작될 때 구성하고 <processModel> , 요소는 각각 30초 동안 애플리케이션 풀에서 작업자 프로세스를 종료하고 시작하기 위해 shutdownTimeLimitstartupTimeLimit 특성을 구성합니다. 이러한 시간 제한을 초과하면 IIS는 작업자 프로세스를 종료합니다.

<add name="Contoso">
   <recycling logEventOnRecycle="Schedule">
      <periodicRestart>
         <schedule>
            <clear />
            <add value="03:00:00" />
         </schedule>
      </periodicRestart>
   </recycling>
   <processModel identityType="NetworkService" shutdownTimeLimit="00:00:30" startupTimeLimit="00:00:30" />
</add>

샘플 코드

다음 코드 예제에서는 Contoso라는 애플리케이션 풀을 IIS 7 이상 서버에 추가한 다음, 애플리케이션 풀을 매일 오전 3:00에 재활용하도록 설정합니다.

AppCmd.exe

appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso']" /commit:apphost

appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].recycling.periodicRestart.schedule.[value='03:00:00']" /commit:apphost

다음 구문을 사용할 수도 있습니다.

appcmd.exe add apppool /name:"Contoso"

appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].recycling.periodicRestart.schedule.[value='03:00:00']" /commit:apphost

참고

AppCmd.exe 사용하여 이러한 설정을 구성할 때 커밋 매개 변수 apphost 를 로 설정해야 합니다. 그러면 구성 설정이 ApplicationHost.config 파일의 적절한 위치 섹션에 커밋됩니다.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection applicationPoolsSection = config.GetSection("system.applicationHost/applicationPools");
         ConfigurationElementCollection applicationPoolsCollection = applicationPoolsSection.GetCollection();
         ConfigurationElement addElement = applicationPoolsCollection.CreateElement("add");
         addElement["name"] = @"Contoso";
         ConfigurationElement recyclingElement = addElement.GetChildElement("recycling");
         ConfigurationElement periodicRestartElement = recyclingElement.GetChildElement("periodicRestart");
         ConfigurationElementCollection scheduleCollection = periodicRestartElement.GetCollection("schedule");
         ConfigurationElement addElement1 = scheduleCollection.CreateElement("add");
         addElement1["value"] = TimeSpan.Parse("03:00:00");
         scheduleCollection.Add(addElement1);
         applicationPoolsCollection.Add(addElement);
         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim applicationPoolsSection As ConfigurationSection = config.GetSection("system.applicationHost/applicationPools")
      Dim applicationPoolsCollection As ConfigurationElementCollection = applicationPoolsSection.GetCollection
      Dim addElement As ConfigurationElement = applicationPoolsCollection.CreateElement("add")
      addElement("name") = "Contoso"
      Dim recyclingElement As ConfigurationElement = addElement.GetChildElement("recycling")
      Dim periodicRestartElement As ConfigurationElement = recyclingElement.GetChildElement("periodicRestart")
      Dim scheduleCollection As ConfigurationElementCollection = periodicRestartElement.GetCollection("schedule")
      Dim addElement1 As ConfigurationElement = scheduleCollection.CreateElement("add")
      addElement1("value") = TimeSpan.Parse("03:00:00")
      scheduleCollection.Add(addElement1)
      applicationPoolsCollection.Add(addElement)
      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools", "MACHINE/WEBROOT/APPHOST");
var applicationPoolsCollection = applicationPoolsSection.Collection;

var addElement = applicationPoolsCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "Contoso";
var recyclingElement = addElement.ChildElements.Item("recycling");
var periodicRestartElement = recyclingElement.ChildElements.Item("periodicRestart");
var scheduleCollection = periodicRestartElement.ChildElements.Item("schedule").Collection;
var addElement1 = scheduleCollection.CreateNewElement("add");
addElement1.Properties.Item("value").Value = "03:00:00";
scheduleCollection.AddElement(addElement1);
applicationPoolsCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools", "MACHINE/WEBROOT/APPHOST")
Set applicationPoolsCollection = applicationPoolsSection.Collection

Set addElement = applicationPoolsCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "Contoso"
Set recyclingElement = addElement.ChildElements.Item("recycling")
Set periodicRestartElement = recyclingElement.ChildElements.Item("periodicRestart")
Set scheduleCollection = periodicRestartElement.ChildElements.Item("schedule").Collection
Set addElement1 = scheduleCollection.CreateNewElement("add")
addElement1.Properties.Item("value").Value = "03:00:00"
scheduleCollection.AddElement(addElement1)
applicationPoolsCollection.AddElement(addElement)

adminManager.CommitChanges()