Inicialización de aplicaciones <applicationInitialization>

Información general

El elemento <applicationInitialization> especifica que la inicialización de aplicaciones web se realiza de forma proactiva antes de recibir una solicitud. Una aplicación puede iniciarse de forma más rápida si las secuencias de inicialización (como la inicialización de conexiones, la preparación de caché en memoria, la ejecución de consultas y la compilación de código de página) se realizan antes de que se reciba la solicitud HTTP. La inicialización de aplicaciones puede comenzar automáticamente el proceso de inicialización cada vez que se inicie una aplicación. La inicialización de aplicaciones no acelera necesariamente la ejecución del proceso de inicialización; inicia el proceso antes.

La inicialización de aplicaciones también permite mejorar la experiencia del usuario durante la inicialización al redireccionar una solicitud a páginas estáticas, como un marcador de posición o una pantalla de presentación. Una vez cargado el sitio, dejará de asignar la solicitud administrada a la página estática y comenzará a servir el contenido dinámico. Al usar el atributo remapManagedRequestsTo en el elemento <applicationInitialization>, la solicitud administrada puede asignarse únicamente a una sola página. Sin embargo, la inicialización de aplicaciones se puede usar junto con el módulo URL Rewrite para IIS fuera de banda para admitir un control más complejo del contenido de marcador de posición, incluidas las asignaciones complejas a contenido estático generado previamente.

Además de la inicialización de aplicaciones, puede habilitar el proceso de inicialización para que comience cada vez que se inicie el grupo de aplicaciones. Para ello, establezca el atributo preLoadEnabled del elemento <application> en "true". Para que esto ocurra, el modo de inicio del elemento <applicationPool> debe estar establecido en AlwaysRunning.

Compatibilidad

Versión Notas
IIS 10.0 El elemento <applicationInitialization> no se modificó en IIS 10.0.
IIS 8.5 El elemento <applicationInitialization> no se modificó en IIS 8.5.
IIS 8.0 El elemento <applicationInitialization> se introdujo en IIS 8.0.
IIS 7.5 N/D
IIS 7.0 N/D
IIS 6,0 N/D

Configuración

Para admitir la inicialización de aplicaciones en el servidor web, debe instalar el rol o la característica Inicialización de aplicaciones.

Windows Server 2012 o Windows Server 2012 R2

  1. En la barra de tareas, haga clic en Administrador del servidor.
  2. En Administrador del servidor, haga clic en el menú Administrar y, después, haga clic en Agregar roles y características.
  3. En el asistente para Agregar roles y características, haga clic en Siguiente. Seleccione el tipo de instalación y haga clic en Siguiente. Seleccione el servidor de destino y haga clic en Siguiente.
  4. En la página Roles de servidor, expanda sucesivamente Servidor web (IIS), Servidor web y Desarrollo de aplicaciones y, a continuación, seleccione Inicialización de aplicaciones. Haga clic en Next.
    Screenshot that shows the Roles pane. Application Initialization is highlighted and checked..
  5. En la página Seleccionar características, haz clic en Siguiente.
  6. En la página Confirmar selecciones de instalación, haga clic en Instalar.
  7. En la página Resultados , haga clic en Cerrar.

Windows 8 o Windows 8.1

  1. En la pantalla Inicio, mueva el puntero hasta la esquina inferior izquierda, haga clic con el botón derecho en el botón Inicio y, a continuación, haga clic en Panel de control.
  2. En Panel de control, haga clic en Programas y características y después en Activar o desactivar las características de Windows.
  3. Expanda sucesivamente Internet Information Services, Servicios World Wide Web y Características de desarrollo de aplicaciones y, a continuación, seleccione Inicialización de aplicaciones.
    Screenshot that shows the Windows Features pane. Application Initialization is highlighted and turned on.
  4. Haga clic en OK.
  5. Haga clic en Cerrar.

Procedimientos

Cómo configurar la inicialización de aplicaciones

  1. Abra el Administrador de Internet Information Services (IIS):

    • Si usa Windows Server 2012 o versiones posteriores:

      • En la barra de tareas, haga clic en Administrador del servidor, en Herramientas y, a continuación, en Administrador de Internet Information Services (IIS).
    • Si usa Windows 8 o versiones posteriores:

      • Mantenga presionada la tecla Windows, presione la letra X y haga clic en Panel de control.
      • Haga clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
  2. En el panel Conexiones, seleccione el servidor o bien expanda el servidor, expanda Sitios y, después, seleccione un sitio.

  3. En el panel Inicio, haga doble clic en la característica Editor de configuración.

  4. Si ha seleccionado un sitio, elija Web.config< nombre del sitio> en el cuadro de texto De y, a continuación, seleccione system.webServer/applicationInitialization en el cuadro de texto Sección.

  5. Si ha seleccionado el servidor, seleccione system.webServer/applicationInitialization en el cuadro de texto Sección.

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

  6. Para especificar el nombre de un archivo estático que debe devolverse durante la inicialización, establezca remapManagedRequestsTo en el nombre del archivo.

  7. Si no quiere cargar módulos administrados, establezca skipManagedModules en true.

  8. Para especificar que el proceso de inicialización comience automáticamente cada vez que se reinicie una aplicación, establezca doAppInitAfterRestart en true.

  9. Para especificar las aplicaciones que se van a inicializar tras el reinicio de aplicación, haga clic en la línea (Colección) y, después, haga clic en los puntos suspensivos.

  10. En el editor de colección, para agregar una aplicación que se va a inicializar, haga clic en Agregar y en hostName y, a continuación, establezca hostName en el nombre del host. Haga clic en initializationPage y establezca su valor en una dirección URL para la aplicación. Cerrar el cuadro de diálogo.

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

  11. Haga clic en Aplicar en el panel Acciones.

Configuración

El elemento <applicationInitialization> se configura en el nivel de servidor, sitio o aplicación.

Atributos

Atributo Descripción
doAppInitAfterRestart Atributo Boolean opcional.

Especifica que el proceso de inicialización comience automáticamente cada vez que se reinicie una aplicación. Tenga en cuenta que esto es distinto del caso del atributo preLoadEnabled en el elemento de aplicación, que especifica que el proceso de inicialización comience después de reiniciar el grupo de aplicaciones.

El valor predeterminado es false.
remapManagedRequestsTo Atributo de cadena opcional.

Especifica una página para reasignar una solicitud durante la inicialización de aplicaciones.

El valor predeterminado es "".
skipManagedModules Atributo Boolean opcional.

Especifica si los módulos administrados se cargan (false) o no (true) durante la inicialización.

El valor predeterminado es false.

Elementos secundarios

Elemento Descripción
add Elemento opcional.

Especifica la aplicación que se va a inicializar tras reiniciarse la aplicación.

Ejemplo de configuración

En el ejemplo siguiente se muestra la configuración de la inicialización de aplicaciones.

<system.webServer>
   <applicationInitialization
      doAppInitAfterRestart="true"
      skipManagedModules="true"
      remapManagedRequestsTo="filename.htm">
      <add initializationPage="/default.aspx" hostName="myhost"/>
   </applicationInitialization>
</system.webServer>

Código de ejemplo

En los ejemplos siguientes se configura <applicationInitialization> para un sitio.

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

Nota:

Debe asegurarse de establecer el parámetro commit en apphost cuando use AppCmd.exe para configurar estos valores. Esto confirma los valores de configuración en la sección de ubicación adecuada del archivo 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'}