モジュール <modules>

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

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

概要

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

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

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

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

互換性

  IIS 7.0 IIS 6.0
注意 <modules> は IIS 7.0 で新たに導入された要素です。

なし

セットアップ

<modules> 要素は、IIS 7.0 の既定のインストールに含まれています。

方法

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

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

  2. [接続] ウィンドウで当該サーバー名を展開して [サイト] を展開し、マネージ モジュールを追加する Web サイトまたはアプリケーションを選択します。

  3. [ホーム] ウィンドウで [モジュール] をダブルクリックします。

    拡大

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

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

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

    拡大

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

構成

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

属性

属性 説明
runAllManagedModulesForAllRequests オプションの Boolean 値。

マネージ コンテンツに対する要求ではない場合でも、すべてのマネージ モジュールですべての要求を処理できる場合は true、そうでない場合は false になります。
既定値は false です。
runManagedModulesForWebDavRequests オプションの Boolean 値。

マネージ モジュールで WebDAV 要求を処理できる場合は true、そうでない場合は false になります。

既定値は false です。

子要素

要素 説明
add オプションの要素。

モジュールのコレクションにモジュールを追加します。
clear オプションの要素。

モジュール コレクションからモジュールに対するすべての参照を削除します。
remove オプションの要素。

モジュール コレクションから 1 つのモジュールに対する参照を削除します。

構成サンプル

このサンプルでは、IIS 7.0 統合モードで実行中の Web アプリケーションに対するモジュールを構成します。

<configuration>

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

サンプル コード

: このドキュメントで紹介している例は、.NET グローバル アセンブリ キャッシュ (GAC) に保存されているマネージ コード アセンブリを使用して示しています。これらの例で示すコードを使用して独自のアセンブリを展開するには、事前に GAC からアセンブリ情報を取得する必要があります。それには、次の手順を実行します。

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

次のコード サンプルでは、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()