Partager via


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

  1. Dans la barre des tâches, cliquez sur Gestionnaire de serveur.
  2. Dans Gestionnaire de serveur, cliquez sur le menu Gérer, puis sur Ajouter des rôles et des fonctionnalités.
  3. 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.
  4. À 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.
    Screenshot that shows the Roles pane. Application Initialization is highlighted and checked. .
  5. Dans la page Sélectionner des fonctionnalités, cliquez sur Suivant.
  6. Dans la page Confirmer les sélections d’installation, cliquez sur Installer.
  7. Dans la page Résultats , cliquez sur Fermer.

Windows 8 ou Windows 8.1

  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.
  2. Dans Panneau de configuration, cliquez sur Programmes et fonctionnalités, puis sur Activer ou désactiver des fonctionnalités Windows.
  3. Développez Internet Information Services, Services World Wide Web, Fonctionnalités de développement d’applications, puis sélectionnez Initialisation d’application.
    Screenshot that shows the Windows Features pane. Application Initialization is highlighted and turned on.
  4. Cliquez sur OK.
  5. Cliquez sur Fermer.

Procédure

Comment configurer l’initialisation d’application

  1. 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).
  2. Dans le volet Connexions, sélectionnez ou développez le serveur, développez Sites puis sélectionnez un site.

  3. Dans le volet Accueil, double-cliquez sur la fonctionnalité Éditeur de configuration.

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

  5. Si vous avez sélectionné le serveur, sélectionnez system.webServer/applicationInitialization dans la zone de texte Section.

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

  6. Pour spécifier le nom d’un fichier statique à renvoyer lors de l’initialisation, définissez remapManagedRequestsTo avec le nom du fichier.

  7. Si vous ne souhaitez pas charger de modules managés, définissez skipManagedModules sur vrai.

  8. Pour spécifier que le processus d’initialisation est lancé automatiquement à chaque redémarrage de l’application, définissez doAppInitAfterRestart sur vrai.

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

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

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

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