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
- En la barra de tareas, haga clic en Administrador del servidor.
- En Administrador del servidor, haga clic en el menú Administrar y, después, haga clic en Agregar roles y características.
- 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.
- 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.
. - En la página Seleccionar características, haz clic en Siguiente.
- En la página Confirmar selecciones de instalación, haga clic en Instalar.
- En la página Resultados , haga clic en Cerrar.
Windows 8 o Windows 8.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.
- En Panel de control, haga clic en Programas y características y después en Activar o desactivar las características de Windows.
- 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.
- Haga clic en OK.
- Haga clic en Cerrar.
Procedimientos
Cómo configurar la inicialización de aplicaciones
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).
En el panel Conexiones, seleccione el servidor o bien expanda el servidor, expanda Sitios y, después, seleccione un sitio.
En el panel Inicio, haga doble clic en la característica Editor de configuración.
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.
Si ha seleccionado el servidor, seleccione system.webServer/applicationInitialization en el cuadro de texto Sección.
Para especificar el nombre de un archivo estático que debe devolverse durante la inicialización, establezca remapManagedRequestsTo en el nombre del archivo.
Si no quiere cargar módulos administrados, establezca skipManagedModules en true.
Para especificar que el proceso de inicialización comience automáticamente cada vez que se reinicie una aplicación, establezca doAppInitAfterRestart en true.
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.
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.
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'}