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
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).
No painel Conexões, expanda o nome do servidor e clique em Pools de Aplicativos.
No painel Ações, selecione Adicionar pool de aplicativos....
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.
Como configurar o pool de aplicativos para um site ou aplicativo existente
- No painel Conexões, expanda Sites e navegue até o site ou aplicativo que deseja adicionar ao pool de aplicativos.
- No painel Ações, clique em Configurações Avançadas...
- 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.
- 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.
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.
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.
"" . |
||||||||
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.
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()