Inicialização do aplicativo <applicationInitialization>
Visão geral
O elemento <applicationInitialization>
especifica que a inicialização do aplicativo Web é executada proativamente antes de uma solicitação ser recebida. Um aplicativo poderá iniciar mais rapidamente se sequências de inicialização, como inicialização de conexões, preparação de caches na memória, execução de consultas e compilação de código de página forem executadas antes do recebimento da solicitação HTTP. A inicialização do aplicativo pode iniciar o processo de inicialização automaticamente sempre que um aplicativo é iniciado. A inicialização do aplicativo não faz necessariamente com que o processo de inicialização seja executado mais rapidamente; ele inicia o processo mais cedo.
A inicialização do aplicativo também permite aprimorar a experiência do usuário durante a inicialização redirecionando uma solicitação para páginas estáticas, como um espaço reservado ou uma tela inicial. Depois que o site for carregado, ele interromperá o mapeamento da solicitação gerenciada para a página estática e começará a fornecer o conteúdo dinâmico. Ao usar o atributo remapManagedRequestsTo no elemento <applicationInitialization>
, você só pode mapear a solicitação gerenciada para uma única página. No entanto, a inicialização do aplicativo pode ser usada em conjunto com o módulo de regravação de URL do IIS fora de banda para dar suporte a uma manipulação mais complexa do conteúdo do espaço reservado, incluindo mapeamentos complexos para conteúdo estático pré-gerado.
Além da inicialização do aplicativo, você pode habilitar o processo de inicialização para iniciar sempre que o pool de aplicativos for iniciado. Você faz isso definindo o atributo preLoadEnabled no elemento <application>
como "true". Para que isso ocorra, o modo de início no elemento <applicationPool>
deve ser definido como AlwaysRunning.
Compatibilidade
Versão | Observações |
---|---|
IIS 10.0 | O elemento <applicationInitialization> não foi modificado no IIS 10.0. |
IIS 8.5 | O elemento <applicationInitialization> não foi modificado no IIS 8.5. |
IIS 8.0 | O elemento <applicationInitialization> foi introduzido no IIS 8.0. |
IIS 7.5 | N/D |
IIS 7.0 | N/D |
IIS 6,0 | N/D |
Instalação
Para dar suporte à inicialização de aplicativos em seu servidor Web, você deve instalar a função ou o recurso de Inicialização do Aplicativo.
Windows Server 2012 R2 ou Windows Server 2012
- Na barra de tarefas, clique em Gerenciador do Servidor.
- No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.
- No assistente Adicionar Funções e Recursos, clique em Avançar. Selecione o tipo de instalação e clique em Avançar. Selecione o servidor de destino e clique em Avançar.
- Na página Funções de Servidor, expanda Servidor Web (IIS), Servidor Web, Desenvolvimento do Aplicativo e selecionar Inicialização de Aplicativos. Clique em Avançar.
. - Na página Selecionar Recursos, clique em Avançar.
- Na página Confirmar seleções de instalação, clique em Instalar.
- Na página Resultados , clique em Fechar.
Windows 8 ou Windows 8.1
- Na tela Iniciar, mova o ponteiro até o canto inferior esquerdo, clique com o botão direito do mouse no botão Iniciar e clique em Painel de Controle.
- Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar recursos do Windows.
- Expanda Serviços de Informações da Internet, Serviços da World Wide Web, Recursos de Desenvolvimento de Aplicativos e selecione Inicialização de Aplicativos.
- Clique em OK.
- Clique em Fechar.
Instruções
Como configurar a inicialização do aplicativo
Abra o Gerenciador dos Serviços de Informações da Internet (IIS):
Se você estiver usando o Windows Server 2012 ou posterior:
- 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 versões posteriores:
- 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).
No painel Conexões, selecione ou expanda o servidor, expanda Sites e, em seguida, selecione um site.
No painel Página Inicial, clique duas vezes no recurso Editor de Configuração.
Se você selecionou um site, selecione <site name> Web.config na caixa de texto De e selecione system.webServer/applicationInitialization na caixa de texto Seção.
Se você selecionou o servidor, selecione system.webServer/applicationInitialization na caixa de texto Seção.
Para especificar o nome de um arquivo estático a ser retornado durante a inicialização, defina remapManagedRequestsTo como o nome do arquivo.
Se você não quiser carregar módulos gerenciados, defina skipManagedModules como true.
Para especificar que o processo de inicialização é iniciado automaticamente sempre que ocorrer uma reinicialização do aplicativo, defina doAppInitAfterRestart como true.
Para especificar o aplicativo ou os aplicativos a serem inicializados após a reinicialização do aplicativo, clique na linha (Coleção) e clique nas reticências.
No Editor de Coleção, para adicionar um aplicativo a ser inicializado, clique em Adicionar, clique em hostName e, em seguida, defina hostName como o nome do host. Clique em initializationPage e defina-o como uma URL para o aplicativo. Fechar a caixa de diálogo.
Clique em Aplicar no painel Ações.
Configuração
O elemento <applicationInitialization>
é configurado no nível do servidor, do site ou do aplicativo.
Atributos
Atributo | Descrição |
---|---|
doAppInitAfterRestart |
Atributo booliano opcional. Especifica que o processo de inicialização é iniciado automaticamente sempre que ocorre uma reinicialização do aplicativo. Observe que isso é diferente do atributo preLoadEnabled no elemento de aplicativo, que especifica que o processo de inicialização é iniciado após uma reinicialização do pool de aplicativos. O valor padrão é false . |
remapManagedRequestsTo |
Atributo de cadeia de caracteres opcional. Especifica uma página para a qual uma solicitação será remapeada durante a inicialização do aplicativo. O valor padrão é "" . |
skipManagedModules |
Atributo booliano opcional. Especifica se os módulos gerenciados são carregados ( false ) ou não carregados (true ) durante a inicialização.O valor padrão é false . |
Elementos filho
Elemento | Descrição |
---|---|
add |
Elemento opcional. Especifica o aplicativo a ser inicializado após a reinicialização do aplicativo. |
Exemplo de configuração
O exemplo a seguir mostra a configuração da inicialização do aplicativo.
<system.webServer>
<applicationInitialization
doAppInitAfterRestart="true"
skipManagedModules="true"
remapManagedRequestsTo="filename.htm">
<add initializationPage="/default.aspx" hostName="myhost"/>
</applicationInitialization>
</system.webServer>
Exemplo de código
Os exemplos a seguir configuram <applicationInitialization> para um site.
AppCmd.exe
appcmd.exe set config "Default Web Site" -section:system.webServer/applicationInitialization /remapManagedRequestsTo:"HelloJoe.htm" /skipManagedModules:"True" /doAppInitAfterRestart:"True" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/applicationInitialization /+"[initializationPage='JoesSite.htm',hostName='JoesHost']" /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 applicationInitializationSection = config.GetSection("system.webServer/applicationInitialization", "Default Web Site");
applicationInitializationSection["remapManagedRequestsTo"] = @"HelloJoe.htm";
applicationInitializationSection["skipManagedModules"] = true;
applicationInitializationSection["doAppInitAfterRestart"] = true;
ConfigurationElementCollection applicationInitializationCollection = applicationInitializationSection.GetCollection();
ConfigurationElement addElement = applicationInitializationCollection.CreateElement("add");
addElement["initializationPage"] = @"JoesSite.htm";
addElement["hostName"] = @"JoesHost";
applicationInitializationCollection.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 applicationInitializationSection As ConfigurationSection = config.GetSection("system.webServer/applicationInitialization", "Default Web Site")
applicationInitializationSection("remapManagedRequestsTo") = "HelloJoe.htm"
applicationInitializationSection("skipManagedModules") = true
applicationInitializationSection("doAppInitAfterRestart") = true
Dim applicationInitializationCollection As ConfigurationElementCollection = applicationInitializationSection.GetCollection
Dim addElement As ConfigurationElement = applicationInitializationCollection.CreateElement("add")
addElement("initializationPage") = "JoesSite.htm"
addElement("hostName") = "JoesHost"
applicationInitializationCollection.Add(addElement)
serverManager.CommitChanges
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var applicationInitializationSection = adminManager.GetAdminSection("system.webServer/applicationInitialization", "MACHINE/WEBROOT/APPHOST/Default Web Site");
applicationInitializationSection.Properties.Item("remapManagedRequestsTo").Value = "HelloJoe.htm";
applicationInitializationSection.Properties.Item("skipManagedModules").Value = true;
applicationInitializationSection.Properties.Item("doAppInitAfterRestart").Value = true;
var applicationInitializationCollection = applicationInitializationSection.Collection;
var addElement = applicationInitializationCollection.CreateNewElement("add");
addElement.Properties.Item("initializationPage").Value = "JoesSite.htm";
addElement.Properties.Item("hostName").Value = "JoesHost";
applicationInitializationCollection.AddElement(addElement);
adminManager.CommitChanges();
VBScript
Set adminManager = CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set applicationInitializationSection = adminManager.GetAdminSection("system.webServer/applicationInitialization", "MACHINE/WEBROOT/APPHOST/Default Web Site")
applicationInitializationSection.Properties.Item("remapManagedRequestsTo").Value = "HelloJoe.htm"
applicationInitializationSection.Properties.Item("skipManagedModules").Value = true
applicationInitializationSection.Properties.Item("doAppInitAfterRestart").Value = true
Set applicationInitializationCollection = applicationInitializationSection.Collection
Set addElement = applicationInitializationCollection.CreateNewElement("add")
addElement.Properties.Item("initializationPage").Value = "JoesSite.htm"
addElement.Properties.Item("hostName").Value = "JoesHost"
applicationInitializationCollection.AddElement(addElement)
adminManager.CommitChanges()
PowerShell
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/applicationInitialization" -name "remapManagedRequestsTo" -value "HelloJoe.htm"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/applicationInitialization" -name "skipManagedModules" -value "True"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/applicationInitialization" -name "doAppInitAfterRestart" -value "True"
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/applicationInitialization" -name "." -value @{initializationPage='JoesSite.htm';hostName='JoesHost'}