Adicionar pools de aplicativos <add>

Visão geral

O elemento <add> do elemento <applicationPools> controla as configurações de um pool de aplicativos do IIS 7 e posterior. Você cria um elemento <add> no arquivo ApplicationHost.config para cada pool de aplicativos que deseja executar no servidor IIS.

O elemento <add> pode conter atributos e elementos filho que configuram o modo de processamento de pipeline e a versão do .NET Framework que os processos de trabalho no pool de aplicativos usam para solicitações de entrada. Esse elemento também contém elementos filho que definem as configurações de identidade dos pools de aplicativos, de desempenho, e de pools de aplicativos de integridade e reciclagem.

Ao criar um novo pool de aplicativos no IIS 7 e posterior, no mínimo, você deve atribuir ao pool de aplicativos um nome exclusivo. Configure as outras propriedades conforme necessário para os aplicativos que usam o pool de aplicativos.

Novidades no IIS 7.5 e posterior

A partir do IIS 7.5, você pode configurar um aplicativo para ser iniciado automaticamente usando os atributos managedRuntimeLoader, CLRConfigFile e startMode do elemento <add>. Esses atributos configuram, respectivamente, o nome da DLL gerenciada que fornece o carregamento de runtime para seu aplicativo, o arquivo de configuração do Common Language Runtime para o aplicativo e o tipo de inicialização do aplicativo.

Outra novidade no IIS 7.5 e posterior é um novo tipo ApplicationPoolIdentity para o atributo identityType do elemento <processModel>. Esse novo tipo de identidade agora é a identidade de processo padrão para aplicativos e possibilita definir a segurança para suas áreas de conteúdo a fim de permitir acesso a um pool de aplicativos específico. Para fazer isso, você definiria sua segurança usando o nome de um pool de aplicativos usando sintaxe como "IIS AppPool\DefaultAppPool". Essa identidade é criada dinamicamente, reduzindo drasticamente a área de ataque de superfície do servidor.

Compatibilidade

Versão Observações
IIS 10.0 O elemento <add> não foi modificado no IIS 10.0.
IIS 8.5 O elemento <add> não foi modificado no IIS 8.5.
IIS 8.0 O valor padrão do atributo managedRuntimeVersion foi alterado para "", e v4.0 foi adicionado como valor para managedRuntimeVersion.
IIS 7.5 O elemento <add> do elemento <applicationPools> foi atualizado no IIS 7.5 para incluir atributos que permitem pré-carregar aplicativos.
IIS 7.0 O elemento <add> da coleção <applicationPools> foi introduzido no IIS 7.0.
IIS 6,0 A coleção <applicationPools> substitui partes da propriedade metabase IIS 6.0 IIsApplicationPools.

Instalação

A coleção <applicationPools> está incluída na instalação padrão do IIS 7 e posteriores.

Instruções

Como criar um novo pool de aplicativos

  1. Abra o Gerenciador dos Serviços de Informações da Internet (IIS):

    • Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:

      • Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows 8 ou Windows 8.1:

      • Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
      • Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:

      • Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows Vista ou Windows 7:

      • Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
      • Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
  2. No painel Conexões, expanda o nome do servidor e clique em Pools de Aplicativos.

  3. No painel Ações, selecione Adicionar pool de aplicativos....

  4. Na caixa de diálogo Adicionar Pool de Aplicativos, insira o nome do pool de aplicativos na caixa Nome:; na lista suspensa Versão do .NET Framework:, selecione a versão do .NET Framework que seu site ou aplicativo usa; na lista suspensa Modo pipeline gerenciado: , selecione Integrado ou Clássico e clique em OK.
    Screenshot of the Add Application Pool dialog box with fields for Name, dot NET Framework version and Managed pipeline mode.

Como configurar o pool de aplicativos para um site ou aplicativo existente

  1. No painel Conexões, expanda Sites e navegue até o site ou aplicativo que deseja adicionar ao pool de aplicativos.
  2. No painel Ações, clique em Configurações Avançadas...
  3. Na seção Geral da caixa de diálogo Configurações Avançadas, clique na entrada do Pool de Aplicativos e, em seguida, no botão de reticências.
    Screenshot that shows the Advanced Settings dialog box with Application Pool highlighted.
  4. Na caixa de diálogo Selecionar Pool de Aplicativos, selecione o pool de aplicativos na caixa de diálogo Pool de aplicativos:, clique em OK e, em seguida, clique em OK novamente.
    Screenshot of Select Application Pool dialog box showing Contoso selected from the application pool drop down box.

Configuração

O elemento <add> da coleção <applicationPools> pode ser configurado no nível do servidor no arquivo ApplicationHost.config.

Atributos

Atributo Descrição
autoStart Atributo booliano opcional.

Quando true, indica ao W3SVC (Serviço de Publicação na World Wide Web) que o pool de aplicativos deve ser iniciado automaticamente ao ser criado ou quando o IIS é iniciado.

O valor padrão é true.
CLRConfigFile Valor string opcional.

Especifica o arquivo de configuração do .NET para o pool de aplicativos.

Observação: esse atributo foi adicionado ao IIS 7.5.

Nenhum valor padrão.
enable32BitAppOnWin64 Atributo booliano opcional.

Quando true, permite que um aplicativo de 32 bits seja executado em um computador que executa uma versão de 64 bits do Windows.

O valor padrão é false.
enableConfigurationOverride Atributo booliano opcional.

Quando true, indica que as configurações delegadas nos arquivos Web.config serão processadas para aplicativos nesse pool de aplicativos. Quando false, todas as configurações nos arquivos Web.config serão ignoradas para esse pool de aplicativos.

O valor padrão é true.
managedPipelineMode Atributo de enumeração opcional.

Especifica o modo de processamento de solicitação usado para processar solicitações de conteúdo gerenciado.

O atributo managedPipelineMode pode ser um dos seguintes valores possíveis.
Valor Descrição
Classic Especifica que o pool de aplicativos usa pipelines de processamento de solicitações separados do IIS e do ASP.NET, que funcionam com o aplicativo ASP.NET 1.1 e aplicativos ASP.NET 2.0 ou posterior que não funcionam no modo integrado.

O valor numérico é 1.
Integrated Especifica que o pool de aplicativos usa o pipeline de processamento de solicitações integrado do IIS e do ASP.NET, que funciona apenas com o aplicativo ASP.NET 2.0 ou posteriores.

O valor numérico é 0.
O padrão é Integrated.
managedRuntimeLoader Atributo de cadeia de caracteres opcional.

Especifica o carregador gerenciado a ser usado para pré-carregar o pool de aplicativos.

Observação: esse atributo foi adicionado ao IIS 7.5.

O valor padrão é webengine4.dll.
managedRuntimeVersion Atributo de cadeia de caracteres opcional.

Especifica a versão do CLR a ser usada pelo pool de aplicativos.

O atributo managedRuntimeVersion pode ser um dos seguintes valores possíveis.
Valor Descrição
v1.1 Especifica que o pool de aplicativos use o CLR versão 1.1.
v2.0 Especifica que o pool de aplicativos use o CLR versão 2.0, que pode ser o .NET Framework versão 2.0, 3.0 ou 3.5.
v4.0 Especifica que o pool de aplicativos use o CLR versão 4.0, que pode ser o .NET Framework versão 4.0 ou 4.5.
O valor padrão é "".
name Atributo de cadeia de caracteres obrigatório.

Especifica um nome exclusivo para um pool de aplicativos no servidor.
passAnonymousToken Atributo booliano opcional.

Se true, o WAS (Serviço de Ativação de Processos do Windows) criar e passar um token para a conta de usuário anônimo IUSR interna para o Módulo de autenticação anônima. O Módulo de autenticação anônima usa o token para representar a conta interna. Quando PassAnonymousToken for false, o token não será passado.

Anotação: a conta de usuário anônimo IUSR substitui a conta anônima IIS_MachineName. A conta IUSR poderá ser utilizada pelo IIS ou outros aplicativos. Não há privilégios atribuídos durante a configuração.

O valor padrão é true.
queueLength Atributo uint opcional.

Indica ao HTTP.sys quantas solicitações são enfileiradas para um pool de aplicativos antes de rejeitar solicitações futuras. O valor padrão é 1000.

Quando o valor definido para essa propriedade é excedido, o IIS rejeita as solicitações seguintes com um erro 503. Se a configuração de loadBalancerCapabilities for true, a conexão será fechada em vez de rejeitar solicitações com um 503. Para obter mais informações sobre loadBalancerCapabilities, consulte Configurações de falhas para um Pool de Aplicativos.
startMode Valor de enumeração opcional.

Especifica o tipo de inicialização para o pool de aplicativos.

Observação: esse atributo foi adicionado ao IIS 7.5.

O atributo startMode pode ser um dos valores possíveis a seguir.
Valor Descrição
AlwaysRunning Especifica que o WAS (Serviço de Ativação de Processos do Windows) sempre iniciará o pool de aplicativos. Esse comportamento permite que um aplicativo carregue o ambiente operacional antes de atender quaisquer solicitações HTTP, o que reduz o processamento de inicialização para solicitações HTTP iniciais para o aplicativo.

O valor numérico é 1.
OnDemand Especifica que o WAS (Serviço de Ativação de Processos do Windows) iniciará o pool de aplicativos quando uma solicitação HTTP for feita para um aplicativo hospedado no pool de aplicativos. Esse comportamento se assemelha ao comportamento do WAS em versões anteriores do IIS.

O valor numérico é 0.
O valor padrão é OnDemand.

Elementos filho

Elemento Descrição
cpu Configura a afinidade da CPU e as ações da CPU.
environmentVariables Configura uma coleção de variáveis de ambiente para passar para processos de trabalho.
failure Configura ações a serem executadas quando um pool de aplicativos falha.
processModel Configura atributos de gerenciamento de processos para um pool de aplicativos.
recycling Configura a reciclagem do pool de aplicativos.

Exemplo de configuração

O exemplo de configuração a seguir usa o elemento do pool <add> de aplicativos para criar um novo pool de aplicativos chamado Contoso. O elemento <recycling> configura o registro em log para reinicializações do pool de aplicativos, o elemento <periodicRestart> é configurado quando o pool de aplicativos é reiniciado e o elemento <processModel> configura os atributos shutdownTimeLimit e startupTimeLimit para desligar e iniciar os processos de trabalho no pool de aplicativos por 30 segundos cada. Se esses limites de tempo forem excedidos, o IIS encerrará o processo de trabalho.

<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>

Exemplo de código

Os exemplos de código a seguir adicionam um pool de aplicativos chamado Contoso ao seu servidor IIS 7 e posterior e, em seguida, definem o pool de aplicativos para reciclagem diária às 3h00.

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

Você também pode usar a seguinte sintaxe:

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

Observação

Defina o parâmetro commit para apphost quando usar AppCmd.exe para definir essas configurações. Isso confirma as definições de configuração para a seção de local apropriado no arquivo 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()