Initialisation de l’application <applicationInitialization>
Vue d’ensemble
L’élément <applicationInitialization>
spécifie que l’initialisation d’application web qui est exécutée de manière proactive avant la réception d’une requête. Une application peut démarrer plus rapidement si des séquences d’initialisation telles que l’initialisation des connexions, l’amorçage en mémoire, les requêtes en cours d’exécution et la compilation du code de page sont effectuées avant la réception de la requête HTTP. L’initialisation d'application peut démarrer le processus d’initialisation automatiquement à chaque démarrage de l’application. L’initialisation de l’application ne rend pas nécessairement l’exécution du processus d’initialisation plus rapide ; elle démarrer le processus plus tôt.
L’initialisation d’application vous permet également d’améliorer l’expérience utilisateur lors de l’initialisation en redirigeant une requête vers des pages statiques, telles qu’un espace réservé ou un écran de démarrage. Une fois le site chargé, il arrête de mapper la requête managée à la page statique et commence à servir le contenu dynamique. Lors de l’utilisation de l’attribut remapManagedRequestsTo dans l’élément <applicationInitialization>
, vous pouvez mapper uniquement la requête gérée à une seule page. Cependant, l’initialisation d’application peut être utilisée conjointement avec le module de réécriture d’URL IIS pour prendre en charge la gestion plus complexe du contenu d’espace réservé, y compris les mappages complexes au contenu statique prédéfini.
En plus de l’initialisation d'application, vous pouvez activer le processus d’initialisation pour démarrer lors du démarrage du pool d'applications. Pour ce faire, définissez l’attribut preLoadEnabled dans l’élément <application>
sur « vrai ». Pour que cela arrive, le mode de démarrage dans l’élément <applicationPool>
doit être défini sur AlwaysRunning.
Compatibilité
Version | Notes |
---|---|
IIS 10.0 | L’élément <applicationInitialization> n’a pas été modifié dans IIS 10.0. |
IIS 8.5 | L’élément <applicationInitialization> n’a pas été modifié dans IIS 8.5. |
IIS 8.0 | L’élément <applicationInitialization> a été introduit dans IIS 8.0. |
IIS 7.5 | S/O |
IIS 7.0 | S/O |
IIS 6.0 | S/O |
Programme d’installation
Pour prendre en charge l’initialisation de l’application sur votre serveur web, vous devez installer le rôle ou la fonctionnalité Initialisation d’application.
Windows Server 2012 ou Windows Server 2012 R2
- Dans la barre des tâches, cliquez sur Gestionnaire de serveur.
- Dans Gestionnaire de serveur, cliquez sur le menu Gérer, puis sur Ajouter des rôles et des fonctionnalités.
- Dans l’Assistant Ajout de rôles et de fonctionnalités, cliquez sur Suivant. Sélectionnez le type d’installation, puis cliquez sur Suivant. Sélectionnez le serveur de destination, puis cliquez sur Suivant.
- À la page Rôles serveur, développez Serveur web (IIS), Serveur web, Développement d’applications, puis sélectionnez Initialisation d’application. Sélectionnez Suivant.
. - Dans la page Sélectionner des fonctionnalités, cliquez sur Suivant.
- Dans la page Confirmer les sélections d’installation, cliquez sur Installer.
- Dans la page Résultats , cliquez sur Fermer.
Windows 8 ou Windows 8.1
- Dans l’écran Démarrer, déplacez le pointeur en bas à gauche, cliquez avec le bouton droit sur le bouton Démarrer, puis cliquez sur Panneau de configuration.
- Dans Panneau de configuration, cliquez sur Programmes et fonctionnalités, puis sur Activer ou désactiver des fonctionnalités Windows.
- Développez Internet Information Services, Services World Wide Web, Fonctionnalités de développement d’applications, puis sélectionnez Initialisation d’application.
- Cliquez sur OK.
- Cliquez sur Fermer.
Procédure
Comment configurer l’initialisation d’application
Ouvrez le Gestionnaire des services Internet (IIS) :
Si vous utilisez Windows Server 2012 ou une version ultérieure :
- Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez sur Outils, puis sur Gestionnaire Internet Information Services (IIS).
Si vous utilisez Windows 8 ou une version ultérieure :
- Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
- Cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
Dans le volet Connexions, sélectionnez ou développez le serveur, développez Sites puis sélectionnez un site.
Dans le volet Accueil, double-cliquez sur la fonctionnalité Éditeur de configuration.
Si vous avez sélectionné un site, sélectionnez <nom de site> Web.config dans la zone de texte De, puis sélectionnez system.webServer/applicationInitialization dans la zone de texteSection.
Si vous avez sélectionné le serveur, sélectionnez system.webServer/applicationInitialization dans la zone de texte Section.
Pour spécifier le nom d’un fichier statique à renvoyer lors de l’initialisation, définissez remapManagedRequestsTo avec le nom du fichier.
Si vous ne souhaitez pas charger de modules managés, définissez skipManagedModules sur vrai.
Pour spécifier que le processus d’initialisation est lancé automatiquement à chaque redémarrage de l’application, définissez doAppInitAfterRestart sur vrai.
Pour spécifier l’application ou les applications à initialiser au redémarrage de l’application, cliquez sur la ligne (Collection), puis sur les points de suspension.
Dans l’éditeur de collection, pour ajouter une application à initialiser, cliquez sur Ajouter, cliquez sur hostName, puis définissez hostName sur le nom de l’hôte. Cliquez sur initializationPage et définissez-le sur une URL pour l’application. Fermez la boîte de dialogue.
Cliquez sur Appliquer dans le volet Actions.
Configuration
L’élément <applicationInitialization>
est configuré au niveau du serveur, du site ou de l’application.
Attributs
Attribut | Description |
---|---|
doAppInitAfterRestart |
Attribut booléen facultatif. Spécifie que le processus d’initialisation est lancé automatiquement à chaque redémarrage de l’application. Notez que cela est différent de l’attribut preLoadEnabled dans l’élément d’application, qui spécifie que le processus d’initialisation est démarré après un redémarrage du pool d’applications. La valeur par défaut est false . |
remapManagedRequestsTo |
Attribut de chaîne facultatif. Spécifie une page pour le remappage d’une requête pendant l’initialisation de l’application. La valeur par défaut est "" . |
skipManagedModules |
Attribut booléen facultatif. Spécifie si les modules managés sont chargés ( false ) ou non chargés (true ) pendant l’initialisation.La valeur par défaut est false . |
Éléments enfants
Élément | Description |
---|---|
add |
Élément facultatif. Spécifie l’application à initialiser lors du redémarrage de l’application. |
Exemple Configuration
L’exemple suivant montre la configuration de l’initialisation de l’application.
<system.webServer>
<applicationInitialization
doAppInitAfterRestart="true"
skipManagedModules="true"
remapManagedRequestsTo="filename.htm">
<add initializationPage="/default.aspx" hostName="myhost"/>
</applicationInitialization>
</system.webServer>
Exemple de code
Les exemples suivants configurent <applicationInitialization> pour un 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
Remarque
Vous devez veiller à définir le paramètre commit sur apphost
quand vous utilisez AppCmd.exe pour configurer ces paramètres. Cela valide les paramètres de configuration dans la section d’emplacement appropriée dans le fichier 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'}