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

  1. Na barra de tarefas, clique em Gerenciador do Servidor.
  2. No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.
  3. 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.
  4. 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.
    Screenshot that shows the Roles pane. Application Initialization is highlighted and checked. .
  5. Na página Selecionar Recursos, clique em Avançar.
  6. Na página Confirmar seleções de instalação, clique em Instalar.
  7. Na página Resultados , clique em Fechar.

Windows 8 ou Windows 8.1

  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.
  2. Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar recursos do Windows.
  3. 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.
    Screenshot that shows the Windows Features pane. Application Initialization is highlighted and turned on.
  4. Clique em OK.
  5. Clique em Fechar.

Instruções

Como configurar a inicialização do aplicativo

  1. 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).
  2. No painel Conexões, selecione ou expanda o servidor, expanda Sites e, em seguida, selecione um site.

  3. No painel Página Inicial, clique duas vezes no recurso Editor de Configuração.

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

  5. Se você selecionou o servidor, selecione system.webServer/applicationInitialization na caixa de texto Seção.

    Screenshot that shows the Configuration Editor pane. Collection is highlighted.

  6. Para especificar o nome de um arquivo estático a ser retornado durante a inicialização, defina remapManagedRequestsTo como o nome do arquivo.

  7. Se você não quiser carregar módulos gerenciados, defina skipManagedModules como true.

  8. Para especificar que o processo de inicialização é iniciado automaticamente sempre que ocorrer uma reinicialização do aplicativo, defina doAppInitAfterRestart como true.

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

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

    Screenshot that shows the Collection Editor pane. Host name is highlighted in the Properties box.

  11. 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'}