Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Общие сведения
Элемент <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 и более поздних версий по умолчанию.
Инструкции
Создание пула приложений
Откройте диспетчер служб 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.
В области Подключения разверните имя сервера и щелкните Пулы приложений.
В области Действия щелкните Добавить пул приложений....
В диалоговом окне Добавление пула приложений введите имя пула приложений в поле Имя: , в раскрывающемся списке платформа .NET Framework версия: выберите версию платформа .NET Framework, используемой сайтом или приложением, в раскрывающемся списке Режим управляемого конвейера: выберите Интегрированная или Классическая, а затем нажмите кнопку ОК.
Настройка пула приложений для существующего сайта или приложения
- В области Подключения разверните узел Сайты, а затем перейдите к веб-сайту или приложению, которые вы хотите добавить в пул приложений.
- В области Действия щелкните Дополнительные параметры...
- В разделе Общие диалогового окна Дополнительные параметры щелкните запись Пул приложений и нажмите кнопку с многоточием.
- В диалоговом окне Выбор пула приложений выберите пул приложений в раскрывающемся списке Пул приложений: нажмите кнопку ОК, а затем снова нажмите кнопку ОК .
Конфигурация
Элемент <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 может быть одним из следующих возможных значений.
Integrated . |
||||||||
managedRuntimeLoader |
Необязательный строковый атрибут. Указывает управляемый загрузчик, используемый для предварительной загрузки пула приложений. Примечание: Этот атрибут был добавлен в IIS 7.5. Значение по умолчанию — webengine4.dll. |
||||||||
managedRuntimeVersion |
Необязательный строковый атрибут. Указывает версию среды CLR, используемую пулом приложений. Атрибут managedRuntimeVersion может быть одним из следующих возможных значений.
"" . |
||||||||
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 может быть одним из следующих возможных значений.
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()