Modules 要素 <modules element>

概要

<modules> 要素は、アプリケーションに登録されているネイティブ コード モジュールとマネージド コード モジュールを定義します。 インターネット インフォメーション サービス (IIS) 要求パイプライン処理の一環として、IIS は要求ごとに <modules> 要素に一覧表示されている各モジュールを呼び出します。 モジュールを使用して、セキュリティ、統計、ログ記録などのカスタマイズされた機能や、カスタマイズされたヘッダーやフッターの追加などのカスタマイズされたコンテンツ処理を実装するのが一般的です。

<modules> 要素には、<add> 要素のコレクションが含まれます。 各要素は、アプリケーションに対して有効なモジュールを定義します。 モジュールを有効にすると、特定のアプリケーションに対してサービスを提供できるようになります。

ネイティブ モジュールを有効にする場合は、最初にサーバーにインストールする必要があります。 詳細については、<globalModules> 要素を参照してください。

マネージド モジュールをインストールする必要はありません。アプリケーションごとに直接有効にすることができます。 これにより、アプリケーションは、アプリケーションの Web.config ファイルにマネージド モジュールを登録し、/BIN または /App_Code ディレクトリに実装を提供することによって、マネージド モジュールをアプリケーション内に直接含めることができます。

互換性

バージョン メモ
IIS 10.0 <modules> 要素は、IIS 10.0 では変更されませんでした。
IIS 8.5 <modules> 要素は、IIS 8.5 では変更されませんでした。
IIS 8.0 <modules> 要素は IIS 8.0 では変更されませんでした。
IIS 7.5 <modules> 要素は、IIS 7.5 では変更されませんでした。
IIS 7.0 <modules> 要素が IIS 7.0 で導入されました。
IIS 6.0 該当なし

段取り

<modules> 要素が IIS 7 の既定のインストールに含められます。

操作方法

マネージド モジュールをアプリケーションに追加する方法

  1. インターネット インフォメーション サービス (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) マネージャー] をダブルクリックします。
  2. [接続] ウィンドウで、サーバー名を展開し、[サイト] を展開して、マネージド モジュールを追加する Web サイトまたはアプリケーションに移動します。

  3. [ホーム] ウィンドウで、[モジュール] をダブルクリックします。
    Screenshot of the Default Web Site Home page. The icon for Modules is highlighted.

  4. [操作] ウィンドウで、[マネージド モジュールの追加] をクリックします。

  5. [マネージド モジュールの追加] ダイアログ ボックスで、[名前] ボックスにマネージド モジュールの名前を入力し、[種類] ボックスにモジュールの .NET Framework の完全修飾型を入力または選択します。

  6. モジュールがマネージド要求にのみ応答するようにする場合は、[ASP.NET アプリケーションまたはマネージド ハンドラーへの要求に対してのみ呼び出す] オプションを選択します。
    Screenshot of the Add Managed Module dialog box.

  7. OK をクリックします。

構成

<modules> 要素は、ApplicationHost.config ファイルのサーバー レベルと Web.config ファイルのアプリケーション レベルで構成します。

属性

属性 説明
runAllManagedModulesForAllRequests 省略可能なブール値。

要求がマネージド コンテンツ用でなかった場合でも、すべてのマネージド モジュールがすべての要求を処理できる場合は true、それ以外の場合は false

注: ASP.NET Web サイトでは、ルーティングをサポートするために以前は runAllManagedModulesForAllRequests の値を true に設定する必要がありました。 ただし、IIS 7 をサービス パックで更新した後は、ASP.NET ルーティングを操作するときに runAllManagedModulesForAllRequests の値を false に設定するか、省略できます。 詳細については、MSDN Web サイトの「ASP.NET ルーティング」を参照してください。

既定値は false です。
runManagedModulesForWebDavRequests 省略可能なブール値。

マネージド モジュールが WebDAV 要求を処理できる場合は true、それ以外の場合は false

既定値は false です。

子要素

要素 説明
add 省略可能な要素です。

モジュールのコレクションにモジュールを追加します。
clear 省略可能な要素です。

モジュール コレクションからモジュールへのすべての参照を削除します。
remove 省略可能な要素です。

モジュール コレクションからモジュールへの参照を削除します。

構成サンプル

この例では、IIS 7 統合モードで実行されている Web アプリケーションのモジュールを構成します。

<configuration>
   <system.webServer>
      <modules>
         <add name="Header" type="Contoso.ShoppingCart.Header"/>
      </modules>
   </system.webServer>
</configuration>

サンプル コード

Note

このドキュメントの例は、.NET グローバル アセンブリ キャッシュ (GAC) に格納されているマネージドコード アセンブリの使用を示しています。 これらの例のコードを使用して独自のアセンブリを配置する前に、GAC からアセンブリ情報を取得する必要があります。 そのためには、次の手順を行ってください。

  • Windows エクスプローラーで、C:\Windows\assembly パスを開きます。C: はオペレーティング システム ドライブです。
  • アセンブリを見つけます。
  • アセンブリを右クリックし、[プロパティ] をクリックします。
  • カルチャ値 (例: Neutral) をコピーします。
  • Version 番号 (例: 1.0.0.0) をコピーします。
  • Public Key Token 値 (例: 426f62526f636b73) をコピーします。
  • [キャンセル] をクリックします。

次のコード例では、Contoso という名前の Web サイトのマネージド モジュールを有効にします。 name プロパティはモジュールの CartHeader という名前を定義し、type プロパティはモジュールのマネージド型を定義し、preCondition プロパティは IIS がマネージド要求に対してのみモジュールを呼び出すように定義します。

AppCmd.exe

appcmd.exe set config "Contoso" -section:system.webServer/modules /+"[name='CartHeader',type='Contoso.ShoppingCart.Header',preCondition='managedHandler']"

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.GetWebConfiguration("Contoso");
         ConfigurationSection modulesSection = config.GetSection("system.webServer/modules");
         ConfigurationElementCollection modulesCollection = modulesSection.GetCollection();

         ConfigurationElement addElement = modulesCollection.CreateElement("add");
         addElement["name"] = @"CartHeader";
         addElement["type"] = @"Contoso.ShoppingCart.Header";
         addElement["preCondition"] = @"managedHandler";
         modulesCollection.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.GetWebConfiguration("Contoso")
      Dim modulesSection As ConfigurationSection = config.GetSection("system.webServer/modules")
      Dim modulesCollection As ConfigurationElementCollection = modulesSection.GetCollection

      Dim addElement As ConfigurationElement = modulesCollection.CreateElement("add")
      addElement("name") = "CartHeader"
      addElement("type") = "Contoso.ShoppingCart.Header"
      addElement("preCondition") = "managedHandler"
      modulesCollection.Add(addElement)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso";
var modulesSection = adminManager.GetAdminSection("system.webServer/modules", "MACHINE/WEBROOT/APPHOST/Contoso");
var modulesCollection = modulesSection.Collection;

var addElement = modulesCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "CartHeader";
addElement.Properties.Item("type").Value = "Contoso.ShoppingCart.Header";
addElement.Properties.Item("preCondition").Value = "managedHandler";
modulesCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso"
Set modulesSection = adminManager.GetAdminSection("system.webServer/modules", "MACHINE/WEBROOT/APPHOST/Contoso")
Set modulesCollection = modulesSection.Collection

Set addElement = modulesCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "CartHeader"
addElement.Properties.Item("type").Value = "Contoso.ShoppingCart.Header"
addElement.Properties.Item("preCondition").Value = "managedHandler"
modulesCollection.AddElement addElement

adminManager.CommitChanges()