Anwendungsinitialisierung <applicationInitialization>

Übersicht

Das <applicationInitialization>-Element gibt an, dass die Webanwendungsinitialisierung proaktiv ausgeführt wird, bevor eine Anforderung empfangen wird. Eine Anwendung kann schneller gestartet werden, wenn Initialisierungssequenzen wie das Initialisieren von Verbindungen, das Vorbereiten von Speichercaches, das Ausführen von Abfragen und das Kompilieren von Seitencode ausgeführt werden, bevor die HTTP-Anforderung empfangen wird. Die Anwendungsinitialisierung kann den Initialisierungsprozess automatisch starten, wenn eine Anwendung gestartet wird. Die Anwendungsinitialisierung führt nicht unbedingt dazu, dass der Initialisierungsprozess schneller ausgeführt wird. Der Prozess wird lediglich früher gestartet.

Mithilfe der Anwendungsinitialisierung können Sie auch die Benutzererfahrung während der Initialisierung verbessern, indem Sie eine Anforderung an statische Seiten wie etwa einen Platzhalter oder einen Begrüßungsbildschirm umleiten. Nachdem die Site geladen wurde, wird die verwaltete Anforderung nicht mehr der statischen Seite zugeordnet, und der dynamische Inhalt wird bereitgestellt. Bei Verwendung des remapManagedRequestsTo-Attributs im <applicationInitialization>-Element kann die verwaltete Anforderung nur einer einzelnen Seite zugeordnet werden. Die Anwendungsinitialisierung kann jedoch in Kombination mit dem Out-of-band-URL-Rewrite-Modul für IIS verwendet werden, um eine komplexere Behandlung von Platzhalterinhalten zu unterstützen – einschließlich komplexer Zuordnungen zu vorab generierten statischen Inhalten.

Zusätzlich zur Anwendungsinitialisierung können Sie ermöglichen, dass der Initialisierungsprozess startet, wenn der Anwendungspool gestartet wird. Legen Sie dazu das preLoadEnabled-Attribut im <application>-Element auf „true“ fest. Damit das funktioniert, muss der Startmodus im <applicationPool>-Element auf „AlwaysRunning“ festgelegt werden.

Kompatibilität

Version Hinweise
IIS 10.0 Das <applicationInitialization>-Element wurde in IIS 10.0 nicht geändert.
IIS 8.5 Das <applicationInitialization>-Element wurde in IIS 8.5 nicht geändert.
IIS 8.0 Das <applicationInitialization>-Element wurde in IIS 8.0 eingeführt.
IIS 7.5 N/V
IIS 7.0 N/V
IIS 6.0 N/V

Setup

Um die Anwendungsinitialisierung auf Ihrem Webserver zu unterstützen, müssen Sie die Anwendungsinitialisierungsrolle oder das entsprechende Feature installieren.

Windows Server 2012 oder Windows Server 2012 R2

  1. Klicken Sie auf der Taskleiste auf Server-Manager.
  2. Klicken Sie im Server-Manager auf Verwalten und dann auf Rollen und Features hinzufügen.
  3. Klicken Sie im Assistenten zum Hinzufügen von Rollen und Features auf Weiter. Wählen Sie den Installationstyp aus, und klicken Sie auf Weiter. Wählen Sie den Zielserver aus, und klicken Sie auf Weiter.
  4. Erweitern Sie auf der Seite Serverrollen die Option Webserver (IIS), erweitern Sie Webserver, erweitern Sie Anwendungsentwicklung, und wählen Sie dann Anwendungsinitialisierung aus. Klicken Sie auf Weiter.
    Screenshot that shows the Roles pane. Application Initialization is highlighted and checked.
  5. Klicken Sie auf der Seite Features auswählen auf Weiter.
  6. Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
  7. Klicken Sie auf der Seite Ergebnisse auf Schließen.

Windows 8 oder Windows 8.1

  1. Bewegen Sie auf dem Startbildschirm den Mauszeiger ganz nach links unten, klicken Sie mit der rechten Maustaste auf die Schaltfläche Start, und klicken Sie dann auf Systemsteuerung.
  2. Klicken Sie in der Systemsteuerung auf Programme und Features und dann auf Windows-Features aktivieren oder deaktivieren.
  3. Erweitern Sie Internetinformationsdienste > WWW-Dienste > Anwendungsentwicklungsfeatures, und wählen Sie anschließend Anwendungsinitialisierung aus.
    Screenshot that shows the Windows Features pane. Application Initialization is highlighted and turned on.
  4. Klicken Sie auf OK.
  5. Klicken Sie auf Schließen.

Gewusst wie

Konfigurieren der Anwendungsinitialisierung

  1. Öffnen Sie Internetinformationsdienste-Manager (IIS-Manager):

    • Vorgehensweise unter Windows Server 2012 oder einer höheren Version:

      • Klicken Sie auf der Taskleiste auf Server-Manager > Tools > Internetinformationsdienste-Manager (IIS-Manager).
    • Vorgehensweise unter Windows 8 oder einer höheren Version:

      • Halten Sie die WINDOWS-TASTE gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf Systemsteuerung.
      • Klicken Sie auf Verwaltung, und doppelklicken Sie dann auf Internetinformationsdienste-Manager (IIS-Manager).
  2. Wählen Sie im Bereich Verbindungen den Server aus, oder erweitern Sie den Server, erweitern Sie Sites, und wählen Sie eine Site aus.

  3. Doppelklicken Sie im Bereich Start auf das Feature Konfigurations-Editor.

  4. Falls Sie eine Site ausgewählt haben, wählen Sie im Textfeld Von die Option <Sitename> Web.config und anschließend im Textfeld Abschnitt die Option system.webServer/applicationInitialization aus.

  5. Falls Sie den Server ausgewählt haben, wählen Sie im Textfeld Abschnitt die Option system.webServer/applicationInitialization aus.

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

  6. Um den Namen einer statischen Datei anzugeben, die während der Initialisierung zurückgegeben werden soll, legen Sie remapManagedRequestsTo auf den Namen der Datei fest.

  7. Wenn Sie keine verwalteten Module laden möchten, legen Sie skipManagedModules auf true fest.

  8. Um anzugeben, dass der Initialisierungsprozess bei jedem Neustart einer Anwendung automatisch initiiert wird, legen Sie doAppInitAfterRestart auf true fest.

  9. Wenn Sie die Anwendungen angeben möchten, die beim Neustart der Anwendung initialisiert werden sollen, klicken Sie auf die Zeile (Collection) und anschließend auf die Auslassungspunkte.

  10. Klicken Sie im Sammlungs-Editor auf Hinzufügen > hostName, und legen Sie dann „hostName“ auf den Namen des Hosts fest, um eine zu initialisierende Anwendung hinzuzufügen. Klicken Sie auf initializationPage, und legen Sie diese Option auf eine URL für die Anwendung fest. Schließen Sie das Dialogfeld.

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

  11. Klicken Sie im Bereich Aktionen auf Übernehmen.

Konfiguration

Das <applicationInitialization>-Element wird auf der Server-, Site- oder Anwendungsebene konfiguriert.

Attribute

Attribut Beschreibung
doAppInitAfterRestart Optionales boolesches Attribut.

Gibt an, dass der Initialisierungsprozess automatisch bei jedem Neustart einer Anwendung initiiert wird. Dies ist jedoch anders als beim preLoadEnabled-Attribut im application-Element, mit dem angegeben wird, dass der Initialisierungsprozess nach einem Neustart des Anwendungspools gestartet werden soll.

Der Standardwert ist false.
remapManagedRequestsTo Optionales Zeichenfolgeattribut.

Gibt eine Seite an, der eine Anforderung im Rahmen der Anwendungsinitialisierung neu zugeordnet werden soll.

Der Standardwert ist "".
skipManagedModules Optionales boolesches Attribut.

Gibt an, ob die verwalteten Module während der Initialisierung geladen (false) oder nicht geladen (true) werden.

Der Standardwert ist false.

Untergeordnete Elemente

Element Beschreibung
add Optionales Element.

Gibt die Anwendung an, die beim Neustart der Anwendung initialisiert werden soll.

Konfigurationsbeispiel

Das folgende Beispiel zeigt die Konfiguration der Anwendungsinitialisierung:

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

Beispielcode

In den folgenden Beispielen wird <applicationInitialization> für eine Site konfiguriert.

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

Hinweis

Legen Sie den commit-Parameter auf apphost fest, wenn Sie „AppCmd.exe“ verwenden, um diese Einstellungen zu konfigurieren. Dadurch werden die Konfigurationseinstellungen auf den entsprechenden Speicherortabschnitt in der Datei „ApplicationHost.config“ festgelegt.

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