モジュール <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 の既定のインストールに含まれています。
方法
マネージ モジュールをアプリケーションに追加する方法
タスク バーで [スタート] ボタンをクリックし、[管理ツール] をポイントして [インターネット インフォメーション サービス (IIS) マネージャー] をクリックします。
[接続] ウィンドウで当該サーバー名を展開して [サイト] を展開し、マネージ モジュールを追加する Web サイトまたはアプリケーションを選択します。
[ホーム] ウィンドウで [モジュール] をダブルクリックします。
[操作] ウィンドウで [マネージ モジュールの追加] をクリックします。
[マネージ モジュールの追加] ダイアログ ボックスで、[名前] ボックスにマネージ モジュールの名前を入力し、次に [種類] ボックスでモジュールの .NET Framework 完全修飾の型を入力または選択します。
モジュールがマネージ要求にのみ応答するようにするには、[ASP.NET アプリケーションまたはマネージ ハンドラーへの要求に対してのみ呼び出す] を選択します。
[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()