概要
<applicationPools>
要素の <add>
要素は、IIS 7 以降のアプリケーション プールの構成設定を制御します。 ApplicationHost.config ファイルに、IIS サーバーで実行するアプリケーション プールごとに <add>
要素を作成します。
<add>
要素には、パイプライン処理モードを構成する属性と子要素、およびアプリケーション プール内のワーカー プロセスが着信要求に使用する .NET Framework のバージョンを含めることができます。 この要素には、アプリケーション プールの ID、パフォーマンス、正常性、およびリサイクル アプリケーション プールの設定を構成する子要素も含まれています。
IIS 7 以降で新しいアプリケーション プールを作成するときは、少なくともアプリケーション プールに一意の名前を割り当てる必要があります。 アプリケーション プールを使用するアプリケーションに、必要に応じて他のすべてのプロパティを構成します。
IIS 7.5 以降の新機能
IIS 7.5 以降では、managedRuntimeLoader、CLRConfigFile、および <add>
要素の startMode 属性を使用して、自動的に起動するようにアプリケーションを構成できます。 これらの属性は、それぞれ、アプリケーションのランタイム読み込みを提供するマネージド DLL の名前、アプリケーションの共通言語ランタイム構成ファイル、およびアプリケーションのスタートアップの種類を構成します。
IIS 7.5 以降の新機能には、<processModel>
要素の identityType 属性の新しい ApplicationPoolIdentity
型もあります。 この新しい ID 型が、アプリケーションの既定のプロセス ID になり、コンテンツ領域のセキュリティを設定して、特定のアプリケーション プールへのアクセスを許可できるようになりました。 これを行うには、"IIS AppPool\DefaultAppPool" のような構文を使用して、アプリケーション プールの名前を使ってセキュリティを設定します。この ID は動的に作成されるため、攻撃対象になるサーバー領域が大幅に減少します。
互換性
バージョン | メモ |
---|---|
IIS 10.0 | <add> 要素は IIS 10.0 では変更されませんでした。 |
IIS 8.5 | <add> 要素は IIS 8.5 では変更されませんでした。 |
IIS 8.0 | managedRuntimeVersion 属性の既定値が "" に変更され、managedRuntimeVersion の値として v4.0 が追加されました。 |
IIS 7.5 | <applicationPools> 要素の <add> 要素は、アプリケーションを事前に読み込むことができる属性を含むように IIS 7.5 で更新されました。 |
IIS 7.0 | <applicationPools> コレクションの <add> 要素は IIS 7.0 で導入されました。 |
IIS 6.0 | <applicationPools> コレクションは、IIS 6.0 の IIsApplicationPools メタベース プロパティの一部を置き換えます。 |
段取り
<applicationPools>
コレクションは、IIS 7 以降の既定のインストールに含まれています。
操作方法
新しいアプリケーション プールの作成方法
次のようにインターネット インフォメーション サービス (IIS) マネージャーを開きます。
Windows Server 2012 または Windows Server 2012 R2 を使用している場合:
- タスク バーで、[サーバー マネージャー] をクリックし、[ツール]、[インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
Windows 8 または Windows 8.1 を使用している場合:
- Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
- [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
Windows Server 2008 または Windows Server 2008 R2 を使用している場合:
- タスク バーで、[スタート] ボタンをクリックし、[管理ツール]、[インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
Windows Vista または Windows 7 を使用している場合:
- タスク バーで、[スタート]、[コントロール パネル] の順にクリックします。
- [管理ツール] をダブルクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
[接続] ウィンドウでサーバー名を展開し、[アプリケーション プール] をクリックします。
[操作] ウィンドウで [アプリケーション プールの追加...] をクリックします。
[アプリケーション プールの追加] ダイアログ ボックスで [名前] ボックスにアプリケーション プールの名前を入力し、[.NET Framework バージョン] ドロップダウン リストでサイトまたはアプリケーションが使用する .NET Framework バージョンを選び、[マネージド パイプライン モード] ドロップダウン リストで [統合] または [クラシック] を選択して、[OK]クリックします。
既存のサイトまたはアプリケーションのアプリケーション プールの構成方法
- [接続] ウィンドウで、[サイト] を展開し、アプリケーション プールを追加する先の Web サイトまたはアプリケーションにアクセスします。
- [操作] ウィンドウの [詳細設定...] をクリックします。
- [詳細設定] ダイアログ ボックスの [全般] セクションで、[アプリケーション プール] エントリをクリックし、省略記号ボタンをクリックします。
- [アプリケーション プールの選択] ダイアログ ボックスで、[アプリケーション プール] ドロップダウン ボックスからアプリケーション プールを選び、[OK] をクリックして、もう一度 [OK] をクリックします。
構成
<applicationPools>
コレクションの <add>
要素は ApplicationHost.config ファイルにサーバー レベルで構成できます。
属性
属性 | 説明 | ||||||||
---|---|---|---|---|---|---|---|---|---|
autoStart |
省略可能な Boolean 属性です。 true にすると、アプリケーション プールの作成時または IIS の起動時にアプリケーション プールが自動的に開始される必要があると World Wide Web 発行サービス (W3SVC) に対して通知されます。 既定値は true です。 |
||||||||
CLRConfigFile |
省略可能な文字列値。 アプリケーション プールの .NET 構成ファイルを指定します。 注: この属性は IIS 7.5 で追加されました。 既定値はありません。 |
||||||||
enable32BitAppOnWin64 |
省略可能な Boolean 属性です。 true にすると、64 ビット バージョンの Windows を実行するコンピューターで 32 ビット アプリケーションを実行できます。 既定値は false です。 |
||||||||
enableConfigurationOverride |
省略可能な Boolean 属性です。 true にすると、Web.config ファイル内の委任された設定がこのアプリケーション プール内のアプリケーションに対して処理されることを示します。 false にすると、このアプリケーション プールの Web.config ファイル内のすべての設定が無視されます。 既定値は true です。 |
||||||||
managedPipelineMode |
省略可能な列挙型属性。 マネージド コンテンツの要求を処理するために使用される要求処理モードを指定します。 managedPipelineMode 属性には、次のいずれかの値を指定できます。
Integrated です。 |
||||||||
managedRuntimeLoader |
省略可能な文字列属性。 アプリケーション プールの事前読み込みに使用するマネージド ローダーを指定します。 注: この属性は IIS 7.5 で追加されました。 既定値は webengine4.dll です。 |
||||||||
managedRuntimeVersion |
省略可能な文字列属性。 アプリケーション プールで使用する CLR バージョンを指定します。 managedRuntimeVersion 属性には、次のいずれかの値を指定できます。
"" です。 |
||||||||
name |
必須の文字列属性です。 サーバー上のアプリケーション プールの一意の名前を指定します。 |
||||||||
passAnonymousToken |
省略可能な Boolean 属性です。 true にすると、組み込みの IUSR 匿名ユーザー アカウントのトークンを Windows プロセス アクティブ化サービス (WAS) が作成し、匿名認証モジュールに渡します。 匿名認証モジュールは、そのトークンを使用して組み込みアカウントの権限を借用します。 PassAnonymousToken を false にすると、トークンは渡されません。 注: IUSR 匿名ユーザー アカウントは、IIS_MachineName 匿名アカウントを置き換えます。 IUSR アカウントは、IIS または他のアプリケーションで使用できます。 セットアップ中に割り当てられる特権はありません。 既定値は true です。 |
||||||||
queueLength |
省略可能な uint 属性。 HTTP.sys に対して、アプリケーション プールのキューに登録する要求数がいくつになったら以降の要求を拒否するかを指定します。 既定値は 1000 です。このプロパティに設定した値を超えると、IIS は以降の要求を拒否し、503 エラーを返します。 loadBalancerCapabilities 設定が true の場合、503 で要求を拒否せずに、接続が閉じられます。 loadBalancerCapabilities の詳細については、「アプリケーション プール エラーの失敗設定」を参照してください。 |
||||||||
startMode |
省略可能な列挙値。 アプリケーション プールのスタートアップの種類を指定します。 注: この属性は IIS 7.5 で追加されました。 startMode 属性には、次のいずれかの値を指定できます。
OnDemand です。 |
子要素
要素 | 説明 |
---|---|
cpu |
CPU アフィニティと CPU アクションを構成します。 |
environmentVariables |
ワーカー プロセスに渡す環境変数のコレクションを構成します。 |
failure |
アプリケーション プールが失敗したときに実行するアクションを構成します。 |
processModel |
アプリケーション プールのプロセス管理属性を構成します。 |
recycling |
アプリケーション プールのリサイクルを構成します。 |
構成サンプル
次の構成サンプルは、アプリケーション プールの <add>
要素を使用して、Contoso という名前の新しいアプリケーション プールを作成します。 <recycling>
要素は、アプリケーション プールの再開のログを構成し、<periodicRestart>
要素はアプリケーション プールがいつ再開するかを構成し、<processModel>
要素はアプリケーション プール内のワーカー プロセスのシャットダウンと開始の shutdownTimeLimit 属性と startupTimeLimit 属性をそれぞれ 30 秒間に構成します。 これらの制限時間を超えると、IIS がワーカー プロセスを終了します。
<add name="Contoso">
<recycling logEventOnRecycle="Schedule">
<periodicRestart>
<schedule>
<clear />
<add value="03:00:00" />
</schedule>
</periodicRestart>
</recycling>
<processModel identityType="NetworkService" shutdownTimeLimit="00:00:30" startupTimeLimit="00:00:30" />
</add>
サンプル コード
次のコード例は、Contoso という名前のアプリケーション プールを IIS 7 以降のサーバーに追加し、次にアプリケーション プールを毎日午前 3 時にリサイクルするように設定します。
AppCmd.exe
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso']" /commit:apphost
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].recycling.periodicRestart.schedule.[value='03:00:00']" /commit:apphost
次の構文も使用できます。
appcmd.exe add apppool /name:"Contoso"
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].recycling.periodicRestart.schedule.[value='03:00:00']" /commit:apphost
Note
AppCmd.exe を使用してこれらの設定を構成するときは、commit パラメーターを必ず apphost
に設定する必要があります。 これで、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 applicationPoolsSection = config.GetSection("system.applicationHost/applicationPools");
ConfigurationElementCollection applicationPoolsCollection = applicationPoolsSection.GetCollection();
ConfigurationElement addElement = applicationPoolsCollection.CreateElement("add");
addElement["name"] = @"Contoso";
ConfigurationElement recyclingElement = addElement.GetChildElement("recycling");
ConfigurationElement periodicRestartElement = recyclingElement.GetChildElement("periodicRestart");
ConfigurationElementCollection scheduleCollection = periodicRestartElement.GetCollection("schedule");
ConfigurationElement addElement1 = scheduleCollection.CreateElement("add");
addElement1["value"] = TimeSpan.Parse("03:00:00");
scheduleCollection.Add(addElement1);
applicationPoolsCollection.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 applicationPoolsSection As ConfigurationSection = config.GetSection("system.applicationHost/applicationPools")
Dim applicationPoolsCollection As ConfigurationElementCollection = applicationPoolsSection.GetCollection
Dim addElement As ConfigurationElement = applicationPoolsCollection.CreateElement("add")
addElement("name") = "Contoso"
Dim recyclingElement As ConfigurationElement = addElement.GetChildElement("recycling")
Dim periodicRestartElement As ConfigurationElement = recyclingElement.GetChildElement("periodicRestart")
Dim scheduleCollection As ConfigurationElementCollection = periodicRestartElement.GetCollection("schedule")
Dim addElement1 As ConfigurationElement = scheduleCollection.CreateElement("add")
addElement1("value") = TimeSpan.Parse("03:00:00")
scheduleCollection.Add(addElement1)
applicationPoolsCollection.Add(addElement)
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools", "MACHINE/WEBROOT/APPHOST");
var applicationPoolsCollection = applicationPoolsSection.Collection;
var addElement = applicationPoolsCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "Contoso";
var recyclingElement = addElement.ChildElements.Item("recycling");
var periodicRestartElement = recyclingElement.ChildElements.Item("periodicRestart");
var scheduleCollection = periodicRestartElement.ChildElements.Item("schedule").Collection;
var addElement1 = scheduleCollection.CreateNewElement("add");
addElement1.Properties.Item("value").Value = "03:00:00";
scheduleCollection.AddElement(addElement1);
applicationPoolsCollection.AddElement(addElement);
adminManager.CommitChanges();
VBScript
Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools", "MACHINE/WEBROOT/APPHOST")
Set applicationPoolsCollection = applicationPoolsSection.Collection
Set addElement = applicationPoolsCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "Contoso"
Set recyclingElement = addElement.ChildElements.Item("recycling")
Set periodicRestartElement = recyclingElement.ChildElements.Item("periodicRestart")
Set scheduleCollection = periodicRestartElement.ChildElements.Item("schedule").Collection
Set addElement1 = scheduleCollection.CreateNewElement("add")
addElement1.Properties.Item("value").Value = "03:00:00"
scheduleCollection.AddElement(addElement1)
applicationPoolsCollection.AddElement(addElement)
adminManager.CommitChanges()