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
- Klicken Sie auf der Taskleiste auf Server-Manager.
- Klicken Sie im Server-Manager auf Verwalten und dann auf Rollen und Features hinzufügen.
- 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.
- 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.
- Klicken Sie auf der Seite Features auswählen auf Weiter.
- Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
- Klicken Sie auf der Seite Ergebnisse auf Schließen.
Windows 8 oder Windows 8.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.
- Klicken Sie in der Systemsteuerung auf Programme und Features und dann auf Windows-Features aktivieren oder deaktivieren.
- Erweitern Sie Internetinformationsdienste > WWW-Dienste > Anwendungsentwicklungsfeatures, und wählen Sie anschließend Anwendungsinitialisierung aus.
- Klicken Sie auf OK.
- Klicken Sie auf Schließen.
Gewusst wie
Konfigurieren der Anwendungsinitialisierung
Ö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).
Wählen Sie im Bereich Verbindungen den Server aus, oder erweitern Sie den Server, erweitern Sie Sites, und wählen Sie eine Site aus.
Doppelklicken Sie im Bereich Start auf das Feature Konfigurations-Editor.
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.
Falls Sie den Server ausgewählt haben, wählen Sie im Textfeld Abschnitt die Option system.webServer/applicationInitialization aus.
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.
Wenn Sie keine verwalteten Module laden möchten, legen Sie skipManagedModules auf true fest.
Um anzugeben, dass der Initialisierungsprozess bei jedem Neustart einer Anwendung automatisch initiiert wird, legen Sie doAppInitAfterRestart auf true fest.
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.
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.
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'}