Pool de aplicativos <applicationPools>

Visão geral

O elemento <applicationPools> contém configurações para todos os pools de aplicativos em execução no servidor IIS (Serviços de Informações da Internet) 7 ou posterior. Um pool de aplicativos define um grupo de um ou mais processos de trabalho configurados com configurações comuns que atendem solicitações a um ou mais aplicativos atribuídos a esse pool de aplicativos. Como os pools de aplicativos permitem que um conjunto de aplicativos Web compartilhe um ou mais processos de trabalho configurados da mesma forma, eles fornecem uma maneira conveniente de isolar um conjunto de aplicativos Web de outros aplicativos Web no computador servidor. Os limites do processo separam cada processo de trabalho; portanto, os problemas de aplicativos em um pool de aplicativos não afetam sites ou aplicativos em outros pools de aplicativos. Os pools de aplicativos aumentam significativamente a confiabilidade e a capacidade de gerenciamento da infraestrutura da Web.

Você pode optar por usar o pool de aplicativos padrão fornecido pelo IIS na instalação ou criar seu próprio pool de aplicativos. Você pode executar quantos pools de aplicativos no servidor IIS 7 e posterior precisar, embora isso possa afetar o desempenho do servidor. Os pools de aplicativos podem conter um ou mais processos de trabalho. Cada processo de trabalho representa o trabalho que está sendo feito para um site, aplicativo Web ou serviço Web. Você pode criar um jardim da Web permitindo que vários processos de trabalho sejam executados em um único pool de aplicativos.

No IIS 7 e posterior, cada pool de aplicativos usa um dos dois modos de integração do .NET para executar aplicativos ASP.NET: Integrado ou Clássico. O modo de integração do .NET definido para o pool de aplicativos determina como o IIS processa uma solicitação de entrada para os sites, aplicativos e serviços Web executados nesse pool de aplicativos.

  • O modo Integrado permite que o IIS processe solicitações no pool de aplicativos usando o pipeline integrado do IIS 7 e posterior. Isso permite que os módulos do ASP.NET participem do processamento de solicitação do IIS, sem importar o tipo de recurso solicitado. O uso do modo integrado disponibiliza recursos do pipeline de solicitação do ASP.NET 2.0 disponíveis para solicitações de conteúdo estático, bem como ASP, PHP e outros tipos de conteúdo. Por padrão, os pools de aplicativos do IIS 7 e posterior são executados nesse modo.
  • O modo Clássico usa o pipeline de processamento do IIS 6.0 para hospedar aplicativos ASP.NET. Nesse modo, as solicitações são processadas inicialmente por meio do IIS 7 e de módulos posteriores, e as solicitações do ASP.NET são processadas pelo aspnet_isapi.dll. O pipeline de processamento do ASP.NET é separado do pipeline de processamento do IIS 7 e posterior, e os recursos de pipeline de processamento de solicitação do ASP.NET não estão disponíveis para outros tipos de recursos. Isso também significa que uma solicitação do ASP.NET deve passar por módulos de autenticação e autorização em ambos os modelos de processo. Embora isso não seja tão eficiente quanto o modo integrado, permite que você execute aplicativos desenvolvidos usando o ASP.NET versão 1.1 em um servidor IIS 7 e posterior sem modificar o aplicativo para que seja executado no modo Integrado.

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 <applicationPools> não foi modificado no IIS 10.0.
IIS 8.5 O elemento <applicationPools> não foi modificado no IIS 8.5.
IIS 8.0 O elemento <applicationPools> não foi modificado no IIS 8.0.
IIS 7.5 O elemento <add> do elemento <applicationPools> foi atualizado no IIS 7.5 para incluir atributos que permitem pré-carregar aplicativos usando os atributos managedRuntimeLoader, CLRConfigFile e startMode e para executar aplicativos usando o novo ApplicationPoolIdentity.
IIS 7.0 O elemento <applicationPools> foi introduzido no IIS 7.0.
IIS 6,0 O elemento <applicationPools> substitui o objeto de metabase IIsApplicationPools do IIS 6.0.

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, showing the Name, dot NET Framework version, and Managed pipeline mode fields.

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 of the Advanced Settings dialog box with the Application Pool entry being 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 the Select Application Pool dialog box's Application pool field, which contains a drop-down menu of available options.

Configuração

O elemento <applicationPools> contém uma coleção de elementos <add>. Cada elemento na coleção configura um pool de aplicativos em execução no IIS 7 e posterior. No mínimo, cada elemento <add> contém um atributo nome que identifica o pool de aplicativos para GUI e ferramentas de gerenciamento de linha de comando. O elemento <add> contém elementos filho que definem o modelo de processo, a CPU e as configurações de reciclagem para o pool de aplicativos.

O elemento <applicationPools> também contém o elemento <applicationPoolDefaults>, que define as configurações padrão para todos os pools de aplicativos no servidor IIS 7 e posterior. Para alterar as configurações do pool de aplicativos padrão no servidor, você pode editar o elemento <applicationPoolDefaults>. Quando você cria um novo pool de aplicativos, as configurações desse pool de aplicativos substituem os padrões definidos no elemento <applicationPoolDefaults>.

Atributos

Nenhum.

Elementos filho

Elemento Descrição
add Adiciona um pool de aplicativos à seção applicationPools.
applicationPoolDefaults Atributo de cadeia de caracteres obrigatório.

Define as configurações padrão para todos os pools de aplicativos em uma seção applicationPools.

Exemplo de configuração

O exemplo de configuração a seguir usa os elementos <add> e <applicationPools> do pool de aplicativos para definir os pools de aplicativos padrão e os padrões do IIS.

<applicationPools>
   <add name="DefaultAppPool" />
   <add name="Classic .NET AppPool" managedPipelineMode="Classic" />
   <applicationPoolDefaults>
      <processModel identityType="NetworkService" />
   </applicationPoolDefaults>
</applicationPools>

Exemplo de código

Os exemplos a seguir adicionam um pool de aplicativos chamado Contoso e definem o modo de pipeline gerenciado como Integrado.

AppCmd.exe

appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso',autoStart='True',managedPipelineMode='Integrated']" /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";
      addElement["autoStart"] = true;
      addElement["managedPipelineMode"] = @"Integrated";
      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"
      addElement("autoStart") = True
      addElement("managedPipelineMode") = "Integrated"
      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";
addElement.Properties.Item("autoStart").Value = true;
addElement.Properties.Item("managedPipelineMode").Value = "Integrated";
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"
addElement.Properties.Item("autoStart").Value = True
addElement.Properties.Item("managedPipelineMode").Value = "Integrated"
applicationPoolsCollection.AddElement(addElement)

adminManager.CommitChanges()