Application Initialization: <applicationInitialization>
概要
<applicationInitialization>
要素は、要求を受信する前に、Web アプリケーションの初期化を事前に実行することを指定します。 HTTP 要求を受信する前に、接続の初期化、メモリ内キャッシュの準備、クエリの実行、ページ コードのコンパイルなどの初期化シーケンスを実行しておけば、アプリケーションをより迅速に起動できます。 Application Initialization は、アプリケーションが起動されるたびに初期化プロセスを自動的に開始できます。 Application Initialization により、初期化プロセスの実行速度が速くなるとは限りません。それは、より早くプロセスを開始するものです。
また、Application Initialization によって、プレースホルダーやスプラッシュ画面などの静的ページに要求をリダイレクトすることで、初期化の間のユーザー エクスペリエンスを向上させることもできます。 サイトが読み込まれた後、マネージド要求の静的ページへのマッピングが停止されて、動的コンテンツの提供が開始されます。 <applicationInitialization>
要素の remapManagedRequestsTo 属性を使うと、マネージド要求を 1 つのページにマップすることだけができます。 ただし、Application Initialization を帯域外の IIS URL 書き換えモジュールと組み合わせて使うと、事前に生成された静的コンテンツへの複雑なマッピングなど、プレースホルダー コンテンツのより複雑な処理をサポートできます。
Application Initialization に加えて、アプリケーション プールが開始されるたびに初期化プロセスを開始できます。 これを行うには、<application>
要素の preLoadEnabled 属性を "true" に設定します。 これが行われるようにするには、<applicationPool>
要素の開始モードを AlwaysRunning に設定する必要があります。
互換性
バージョン | メモ |
---|---|
IIS 10.0 | <applicationInitialization> 要素は IIS 10.0 では変更されませんでした。 |
IIS 8.5 | <applicationInitialization> 要素は IIS 8.5 では変更されませんでした。 |
IIS 8.0 | <applicationInitialization> 要素は IIS 8.0 で導入されました。 |
IIS 7.5 | 該当なし |
IIS 7.0 | 該当なし |
IIS 6.0 | 該当なし |
段取り
Web サーバーでアプリケーションの初期化をサポートするには、Application Initialization の役割または機能をインストールする必要があります。
Windows Server 2012 または Windows Server 2012 R2
- タスク バーで [サーバー マネージャー]をクリックします。
- [サーバー マネージャー] で、[管理] メニューを選択し、[役割と機能の追加] を選択します。
- [役割と機能の追加] ウィザードで、[次へ] をクリックします。 インストールの種類を選択し、[次へ] をクリックします。 対象サーバーを選び、[次へ] をクリックします。
- [サーバーの役割] ページで、[Web サーバー (IIS)]、[Web サーバー]、[アプリケーション開発] の順に展開して、[Application Initialization] を選びます。 次へ をクリックします。
. - [機能の選択] ページで [次へ] をクリックします。
- [インストール オプションの確認] ページで、[インストール] をクリックします。
- [結果] ページで、 [閉じる]をクリックします。
Windows 8 または Windows 8.1
- [スタート] 画面で、ポインターを左下隅まで移動し、[スタート] ボタンを右クリックし、[コントロール パネル] をクリックします。
- [コントロール パネル] で [プログラムと機能] をクリックし、[Windows の機能の有効化または無効化] をクリックします。
- [インターネット インフォメーション サービス]、[World Wide Web サービス]、[アプリケーション開発機能] の順に展開して、[Application Initialization] を選びます。
- OK をクリックします。
- 閉じるをクリックします。
操作方法
Application Initialization を構成する方法
インターネット インフォメーション サービス (IIS) マネージャーを開きます。
Windows Server 2012 以降を使用している場合:
- タスク バーで、[サーバー マネージャー]、[ツール]、[インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
Windows 8 以降を使用している場合:
- Windows キーを押しながら文字 X を押し、次に [コントロール パネル] をクリックします。
- [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
[接続] ウィンドウで、サーバーを選ぶか、サーバーを展開し、[サイト] を展開して、サイトを選びます。
[ホーム] ウィンドウで、[構成エディター] 機能をダブルクリックします。
サイトを選んだ場合は、[接続元] テキスト ボックスで [<サイト名> Web.config] を選んでから、[セクション] テキスト ボックスで [system.webServer/applicationInitialization] を選びます。
サーバーを選んだ場合は、[セクション] テキスト ボックスで [system.webServer/applicationInitialization] を選びます。
初期化の間に返される静的ファイルの名前を指定するには、remapManagedRequestsTo にファイルの名前を設定します。
マネージド モジュールを読み込まない場合は、skipManagedModules を true に設定します。
アプリケーションが再起動するたびに初期化プロセスが自動的に開始されるように指定するには、doAppInitAfterRestart を true に設定します。
アプリケーションの再起動時に初期化するアプリケーション (1 つまたは複数) を指定するには、[(コレクション)] 行をクリックしてから、省略記号をクリックします。
コレクション エディターで、初期化するアプリケーションを追加するには、[追加] をクリックし、[hostName] をクリックしてから、hostName をホストの名前に設定します。 [initializationPage] をクリックして、アプリケーションの URL に設定します。 ダイアログ ボックスを閉じる
[操作] ペインで [適用] をクリックします。
構成
<applicationInitialization>
要素は、サーバー、サイト、またはアプリケーションのレベルで構成されます。
属性
属性 | 説明 |
---|---|
doAppInitAfterRestart |
省略可能な Boolean 属性です。 アプリケーションが再起動するたびに初期化プロセスが自動的に開始されるように指定します。 これは、アプリケーション プールの再起動後に初期化プロセスが開始されることを指定する、application 要素の preLoadEnabled 属性とは異なることに注意してください。 既定値は false です。 |
remapManagedRequestsTo |
省略可能な文字列属性。 アプリケーションの初期化中に要求を再マップするページを指定します。 既定値は "" です。 |
skipManagedModules |
省略可能な Boolean 属性です。 初期化の間に、マネージド モジュールを読み込むか ( false )、読み込まないか (true ) を指定します。既定値は false です。 |
子要素
要素 | 説明 |
---|---|
add |
省略可能な要素です。 アプリケーションの再起動時に初期化するアプリケーションを指定します。 |
構成サンプル
次のサンプルでは、Application Initialization の構成を示します。
<system.webServer>
<applicationInitialization
doAppInitAfterRestart="true"
skipManagedModules="true"
remapManagedRequestsTo="filename.htm">
<add initializationPage="/default.aspx" hostName="myhost"/>
</applicationInitialization>
</system.webServer>
サンプル コード
次の例では、サイトの <applicationInitialization> を構成しています。
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
Note
AppCmd.exe を使用してこれらの設定を構成する場合は、commit パラメーターを必ず apphost
に設定する必要があります。 これにより、ApplicationHost.config ファイルの適切な location セクションに構成設定がコミットされます。
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'}