アプリケーション プール <applicationPools>

  • 概要
  • 互換性
  • セットアップ
  • 方法
  • 構成
  • サンプル コード

※本ページに挿入されている画像をクリックすると、画像全体が別ウィンドウで表示されます。

概要

<applicationPools> 要素には、インターネット インフォメーション サービス (IIS) 7.0 サーバー上で実行されるすべてのアプリケーション プールの構成設定が格納されます。アプリケーション プールによって、1 つ以上のワーカー プロセスから成るグループが定義されます。この定義では、そのアプリケーション プールに割り当てられた 1 つ以上のアプリケーションへの要求を処理するための共通設定が構成されます。アプリケーション プールを使用すると、一連の Web アプリケーションで、同様の構成を持つ 1 つ以上のワーカー プロセスを共有できることから、アプリケーション プールは、一連の Web アプリケーションをサーバー コンピューター上の他の Web アプリケーションから切り離す必要があるときに役立ちます。プロセス境界によって各ワーカー プロセスが分けられるため、1 つのアプリケーション プールで発生したアプリケーションの問題が他のアプリケーション プール内のアプリケーションや Web サイトに影響することはありません。アプリケーション プールは、Web インフラストラクチャの信頼性と管理性を大いに向上させます。

IIS 7.0 では、アプリケーション プールごとに、ASP.NET アプリケーション実行の 2 つの .NET 統合モード、統合またはクラシックのいずれかを使用します。アプリケーション プールで定義されている .NET 統合モードによって、そのアプリケーション プールで実行されるサイト、アプリケーション、および Web サービスに着信する要求を、IIS がどのように処理するかが決まります。

統合モードの場合、IIS で、IIS 7.0 統合パイプラインを使用したアプリケーション プール内の要求の処理が可能になります。この場合、要求されたリソースの種類にかかわらず、ASP.NET モジュールを IIS 要求処理に参加させることができます。統合モードを使用すると、ASP.NET 2.0 要求パイプラインの利用可能な機能が、静的コンテンツ、および ASP や PHP などの他の種類のコンテンツに対する要求に使用できるようになります。既定では、IIS 7.0 アプリケーション プールはこのモードで実行されます。

クラシック モードでは、ASP.NET アプリケーションのホスティングに IIS 6.0 処理パイプラインが使用されます。このモードの場合、最初に IIS 7.0 モジュールによって要求が処理され、その後さらに aspnet_isapi.dll によって ASP.NET 要求が処理されます。ASP.NET 処理パイプラインは IIS 7.0 処理パイプラインとは分離されているため、ASP.NET 要求処理パイプラインの機能は他のリソースの種類には使用できません。また、ASP.NET 要求は両方のプロセス モデルの認証および承認モジュールを通過しなければなりません。このモードは統合モードほど効率がよくありませんが、このモードを選択すれば、ASP.NET バージョン 1.1 を使用して開発されたアプリケーションを、統合モードで実行できるように変更しなくても、IIS 7.0 サーバー上で実行できます。

インストール時に IIS によって提供される既定のアプリケーション プールを使用することを選択するか、または独自のアプリケーション プールを作成できます。IIS 7.0 サーバー上で実行できるアプリケーション プール数に制限はありませんが、この数はサーバーのパフォーマンスに影響する可能性があります。アプリケーション プールには 1 つ以上のワーカー プロセスを組み込めます。各ワーカー プロセスは、Web サイト、Web アプリケーション、または Web サービスに対して実行されている作業を表します。1 つのアプリケーション プールで複数のワーカー プロセスを実行できるようにすることで、Web ガーデンを生成できます。

互換性

  IIS 7.0 IIS 6.0
注意 <applicationPools> は IIS 7.0 で新たに導入された要素です。 <applicationPools> 要素は、IIS 6.0 の IIsApplicationPools メタベース オブジェクトに代わるものです。

セットアップ

<applicationPools> コレクションは、IIS 7.0 の既定のインストールに含まれています。

方法

新しいアプリケーション プールを作成する方法

  1. [スタート] ボタン、[管理ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。

  2. [接続] ウィンドウで、当該サーバー名を展開し、[アプリケーション プール] をクリックします。

  3. [操作] ウィンドウで [アプリケーション プールの追加] をクリックします。

  4. [アプリケーション プールの追加] ダイアログ ボックスで、[名前] ボックスにアプリケーション プール名を入力し、[.NET Framework バージョン] ドロップダウン リストから、サイトまたはアプリケーションで使用する .NET Framework のバージョンを選択し、[マネージ パイプライン モード] ドロップダウン リストから [統合] または [クラシック] を選択して、[OK] をクリックします。

    拡大

既存のサイトまたはアプリケーションのアプリケーション プールを構成する方法

  1. [接続] ウィンドウで [サイト] を展開して、アプリケーション プールに追加する Web サイトまたはアプリケーションを選択します。

  2. [操作] ウィンドウで [詳細設定] をクリックします。

  3. [詳細設定] ダイアログ ボックスの [全般] セクションで、[アプリケーション プール] をクリックして [...] ボタンをクリックします。

    拡大

  4. [アプリケーション プールの選択] ダイアログ ボックスで、[アプリケーション プール] ドロップダウン ボックスからアプリケーション プールを選択して、[OK] を 2 回クリックします。

    拡大

構成

<applicationPools> 要素には、<add> 要素のコレクションが格納されます。コレクション内の各要素によって、IIS 7.0 上で実行されるアプリケーション プールが構成されます。各 <add> 要素には、少なくとも、GUI やコマンドライン管理ツールに対してアプリケーション プールを識別する name 属性が指定されます。<add> 要素には、アプリケーション プールのプロセス モデル、CPU、およびリサイクル設定を構成する子要素が格納されます。

<applicationPools> 要素には、IIS 7.0 サーバー上のすべてのアプリケーション プールの既定の設定を定義する <applicationPoolDefaults> 要素も格納されます。サーバーの既定のアプリケーション プール設定を変更するには、<applicationPoolDefaults> 要素を編集します。新しいアプリケーション プールの作成時には、そのアプリケーション プールの構成設定によって <applicationPoolDefaults> 要素の既定の設定が上書きされます。

属性

なし。

子要素

要素 説明
add applicationPools セクションにアプリケーション プールを追加します。
applicationPoolDefaults 必須の string 属性。

applicationPools セクションのすべてのアプリケーション プールの既定の設定を構成します。

構成サンプル

次の構成サンプルでは、アプリケーション プールの <add> 要素と <applicationPools> 要素を使用して、IIS で使用する標準のアプリケーション プールと既定値を定義しています。

    <applicationPools>
   <add name="DefaultAppPool" />
   <add name="Classic .NET AppPool" managedPipelineMode="Classic" />
   <applicationPoolDefaults>
      <processModel identityType="NetworkService" />
   </applicationPoolDefaults>

</applicationPools>

サンプル コード

次の例では、Contoso というアプリケーション プールを追加して、マネージ パイプライン モードを統合 (Integrated) に設定しています。

AppCmd.exe

appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso',autoStart='True',managedPipelineMode='Integrated']" /commit:apphost

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";
      addElement["autoStart"] = true;
      addElement["managedPipelineMode"] = @"Integrated";
      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"
      addElement("autoStart") = True
      addElement("managedPipelineMode") = "Integrated"
      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";
addElement.Properties.Item("autoStart").Value = true;
addElement.Properties.Item("managedPipelineMode").Value = "Integrated";
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"
addElement.Properties.Item("autoStart").Value = True
addElement.Properties.Item("managedPipelineMode").Value = "Integrated"
applicationPoolsCollection.AddElement(addElement)

adminManager.CommitChanges()