Поделиться через


Добавление пулов приложений <>

Общие сведения

Элемент <add><applicationPools> элемента управляет параметрами конфигурации для пула приложений IIS 7 и более поздних версий. Вы создаете <add> элемент в файле ApplicationHost.config для каждого пула приложений, который вы хотите запустить на сервере IIS.

Элемент <add> может содержать атрибуты и дочерние элементы, которые настраивают режим обработки конвейера и версию платформа .NET Framework рабочие процессы в пуле приложений, используемые для входящих запросов. Этот элемент также содержит дочерние элементы, которые настраивают удостоверения, производительность и работоспособность пула приложений, а также параметры повторного использования пула приложений.

При создании нового пула приложений в IIS 7 и более поздних версиях необходимо присвоить пулу приложений как минимум уникальное имя. Настройте все остальные свойства для приложений, использующих пул приложений.

Новые возможности в IIS 7.5 и более поздних версий

Начиная с IIS 7.5, вы можете настроить автоматический запуск приложения с помощью атрибутов <add>managedRuntimeLoader, CLRConfigFile и startMode элемента . Эти атрибуты настраивают соответственно имя управляемой библиотеки DLL, которая обеспечивает загрузку среды выполнения для приложения, файл конфигурации среды CLR для приложения и тип запуска для приложения.

Кроме того, новый тип в IIS 7.5 и более поздних версиях — это новый ApplicationPoolIdentity тип для атрибута <processModel>identityType элемента . Этот новый тип удостоверения теперь является идентификатором процесса по умолчанию для приложений и позволяет настроить безопасность для областей содержимого, чтобы разрешить доступ для определенного пула приложений. Для этого необходимо задать безопасность, используя имя пула приложений, используя синтаксис IIS AppPool\DefaultAppPool. Это удостоверение создается динамически, тем самым значительно уменьшая зону атак на сервере.

Совместимость

Версия Примечания
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> заменяет части свойства метабазы IIsApplicationPools IIS 6.0.

Настройка

Коллекция <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, используемой сайтом или приложением, в раскрывающемся списке Режим управляемого конвейера: выберите Интегрированная или Классическая, а затем нажмите кнопку ОК.
    Снимок экрана: диалоговое окно

Настройка пула приложений для существующего сайта или приложения

  1. В области Подключения разверните узел Сайты, а затем перейдите к веб-сайту или приложению, которые вы хотите добавить в пул приложений.
  2. В области Действия щелкните Дополнительные параметры...
  3. В разделе Общие диалогового окна Дополнительные параметры щелкните запись Пул приложений и нажмите кнопку с многоточием.
    Снимок экрана: диалоговое окно
  4. В диалоговом окне Выбор пула приложений выберите пул приложений в раскрывающемся списке Пул приложений: нажмите кнопку ОК, а затем снова нажмите кнопку ОК .
    Снимок экрана: диалоговое окно

Конфигурация

Элемент <add><applicationPools> коллекции можно настроить на уровне сервера в файле ApplicationHost.config.

Атрибуты

Атрибут Описание
autoStart Дополнительный логический атрибут.

Значение true указывает службе W3SVC, что пул приложений должен быть автоматически запущен при его создании или при запуске СЛУЖБ IIS.

Значение по умолчанию — true.
CLRConfigFile Необязательное строковое значение.

Указывает файл конфигурации .NET для пула приложений.

Примечание: Этот атрибут был добавлен в IIS 7.5.

Значение по умолчанию отсутствует.
enable32BitAppOnWin64 Дополнительный логический атрибут.

Если задано значение true, это позволяет запускать 32-разрядное приложение на компьютере под управлением 64-разрядной версии Windows.

Значение по умолчанию — false.
enableConfigurationOverride Дополнительный логический атрибут.

Значение true указывает, что делегированные параметры в файлах Web.config будут обрабатываться для приложений в этом пуле приложений. Если задано значение false, все параметры в файлах Web.config будут игнорироваться для этого пула приложений.

Значение по умолчанию — true.
managedPipelineMode Необязательный атрибут перечисления.

Указывает режим обработки запросов, используемый для обработки запросов на управляемое содержимое.

Атрибут managedPipelineMode может быть одним из следующих возможных значений.
Значение Описание
Classic Указывает, что пул приложений использует отдельные службы IIS и ASP.NET конвейеры обработки запросов, которые работают с приложениями ASP.NET версии 1.1 и ASP.NET 2.0 или более поздних версий, которые не работают в режиме интеграции.

Числовое значение равно 1.
Integrated Указывает, что пул приложений использует интегрированные службы IIS и ASP.NET конвейер обработки запросов, который работает только с приложениями ASP.NET 2.0 или более поздних версий.

Числовое значение равно 0.
Значение по умолчанию — Integrated.
managedRuntimeLoader Необязательный строковый атрибут.

Указывает управляемый загрузчик, используемый для предварительной загрузки пула приложений.

Примечание: Этот атрибут был добавлен в IIS 7.5.

Значение по умолчанию — webengine4.dll.
managedRuntimeVersion Необязательный строковый атрибут.

Указывает версию среды CLR, используемую пулом приложений.

Атрибут managedRuntimeVersion может быть одним из следующих возможных значений.
Значение Описание
v1.1 Указывает, что пул приложений использует среду CLR версии 1.1.
v2.0 Указывает, что пул приложений использует среду CLR версии 2.0, которая может быть платформа .NET Framework версии 2.0, 3.0 или 3.5.
v4.0 Указывает, что пул приложений использует среду CLR версии 4.0, которая может быть платформа .NET Framework версии 4.0 или 4.5.
Значение по умолчанию — "".
name Обязательный строковый атрибут.

Указывает уникальное имя пула приложений на сервере.
passAnonymousToken Дополнительный логический атрибут.

Если задано значение true, служба активации процессов Windows (WAS) создает и передает маркер для встроенной анонимной учетной записи пользователя IUSR модулю анонимной проверки подлинности. Модуль анонимной проверки подлинности использует маркер для олицетворения встроенной учетной записи. Если passAnonymousToken имеет значение false, маркер не будет передан.

Примечание: Учетная запись анонимного пользователя IUSR заменяет IIS_MachineName анонимную учетную запись. Учетная запись IUSR может использоваться службами IIS или другими приложениями. Он не имеет привилегий, назначенных ему во время установки.

Значение по умолчанию — true.
queueLength Необязательный атрибут uint.

Указывает, HTTP.sys, сколько запросов в очереди для пула приложений перед отклонением будущих запросов. Значение по умолчанию — 1000.

При превышении значения, заданного для этого свойства, СЛУЖБЫ IIS отклоняют последующие запросы с ошибкой 503. Если параметр loadBalancerCapabilities имеет значение true, соединение закрывается, а не отклоняет запросы с 503. Дополнительные сведения о loadBalancerCapabilities см. в разделе Параметры сбоя для пула приложений.
startMode Необязательное значение перечисления.

Указывает тип запуска для пула приложений.

Примечание: Этот атрибут был добавлен в IIS 7.5.

Атрибут startMode может быть одним из следующих возможных значений.
Значение Описание
AlwaysRunning Указывает, что служба активации windows (WAS) всегда будет запускать пул приложений. Такое поведение позволяет приложению загружать операционную среду перед выполнением любых HTTP-запросов, что сокращает начальную обработку начальных HTTP-запросов для приложения.

Числовое значение равно 1.
OnDemand Указывает, что служба активации процессов Windows (WAS) запустит пул приложений при выполнении HTTP-запроса для приложения, размещенного в пуле приложений. Это поведение похоже на поведение WAS в предыдущих версиях IIS.

Числовое значение равно 0.
Значение по умолчанию — OnDemand.

Дочерние элементы

Элемент Описание
cpu Настраивает сходство ЦП и действия ЦП.
environmentVariables Настраивает коллекцию переменных среды для передачи в рабочие процессы.
failure Настраивает действия, выполняемые при сбое пула приложений.
processModel Настраивает атрибуты управления процессами для пула приложений.
recycling Настраивает перезапуск пула приложений.

Образец конфигурации

В следующем примере конфигурации используется элемент пула <add> приложений для создания нового пула приложений с именем Contoso. Элемент <recycling> настраивает ведение журнала для перезапусков пула приложений, <periodicRestart> элемент настраивает при перезапуске пула приложений, а <processModel> элемент настраивает атрибуты shutdownTimeLimit и startupTimeLimit для завершения и запуска рабочих процессов в пуле приложений в течение 30 секунд каждый. При превышении этих временных ограничений службы 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()