グローバル モジュール <globalModules>

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

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

<httpProtocol> 要素の <customHeaders> 要素は、インターネット インフォメーション サービス (IIS) 7.0 で Web サーバーから HTTP 応答内で返されるカスタム HTTP ヘッダーを指定します。

: HTTP ヘッダーは、Web サーバーからの応答で返された名前と値のペアです。カスタム応答ヘッダーは、既定の HTTP ヘッダーと共にクライアントに送信されます。リダイレクトが発生した場合にのみ応答で返されるリダイレクト応答ヘッダーと異なり、カスタム応答ヘッダーはどの応答においても必ず返されます。

概要

<globalModules> 要素は、IIS 7.0 サーバーにインストールされているグローバル レベルのモジュールを定義します。<globalModules> 要素はサーバー レベルのみで使用可能なため、モジュールをインストールすると、IIS では ApplicationHost.config ファイルのみが更新されます。ネイティブ モジュールをインストールするには、サーバーの管理者であることが必要です。

IIS 7.0 では、大部分の要求処理がネイティブ モジュールを通して実装されます。IIS 7.0 の役割サービスまたは機能をサービス マネージャーを使用してインストールすると、IIS インストーラーにより、当該モジュールの <globalModules> 要素へのエントリが追加されます。たとえば、IIS 7.0 サーバー上に基本認証役割サービスをインストールすると、<globalModules> 要素への BasicAuthenticationModule エントリがインストーラーによって追加されます。

サードパーティ モジュールをインストールする場合は、当該モジュールに対する <globalModules> 要素へのエントリを追加する必要があります。エントリを追加するには、IIS マネージャーを使用するか、ApplicationHost.config ファイルを手動で編集するか、または AppCmd.exe コマンドライン ツールを使用します。

アプリケーション内のモジュールを有効にするには、そのアプリケーションの <module> 要素を編集する必要があります。

互換性

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

なし

セットアップ

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

方法

ネイティブ モジュールのインストール方法

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

  2. [接続] ウィンドウで、ネイティブ モジュールを追加するサーバー接続をクリックします。

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

    拡大

  4. [操作] ウィンドウで [ネイティブ モジュールの構成] をクリックします。

  5. [ネイティブ モジュールの構成] ダイアログ ボックスで [登録] をクリックします。

    拡大

  6. [ネイティブ モジュールの登録] ダイアログ ボックスで、[名前] ボックスにネイティブ モジュールの名前を入力します。

  7. [パス] ボックスで、.dll ファイルの場所のファイル システム パスを入力するか、[参照] ボタンをクリックします。

    拡大

  8. [ネイティブ モジュールの構成] ダイアログ ボックスで、登録したネイティブ モジュールのオプションを選択して [OK] をクリックし、再度 [OK] をクリックします。これにより、ネイティブ モジュールが実行可能になり、Web サーバー上のサイトおよびアプリケーションで使用できるようになります。

    注 :  ネイティブ モジュールを実行可能にしない場合は、そのネイティブ モジュールの選択を解除して、[OK] をクリックします。

  9. また、構成システムの下位レベルで上書きされるのを防ぐために、ネイティブ モジュールをロックすることもできます。[モジュール] ページでモジュールを選択し、[操作] ウィンドウの [ロック] をクリックします。

ネイティブ モジュールを有効にする方法

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

  2. 管理するサーバー、サイト、またはアプリケーション レベルを選択します。

  3. サーバー、サイト、またはアプリケーションの [ホーム] ウィンドウで、[モジュール] をダブルクリックします。

  4. [操作] ウィンドウで [ネイティブ モジュールの構成] をクリックします。

  5. [ネイティブ モジュールの構成] ダイアログ ボックスで、有効にするネイティブ モジュールのオプションを選択して [OK] をクリックします。

    拡大

構成

<globalModules> 要素には、<add> 要素のコレクションが格納されます。コレクション内の各要素が、サーバーのグローバル モジュールを構成します。

属性

なし。

子要素

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

グローバル モジュールのコレクションにネイティブ モジュールを追加します。
clear オプションの要素。

グローバル モジュール コレクションからネイティブ モジュールへのすべての参照を削除します。
remove オプションの要素。

グローバル モジュール コレクションから 特定のネイティブ モジュールへの参照を削除します。

構成サンプル

次の例では、IIS 7.0 の <globalModules> セクションが表示されています。このセクションには、Web サーバーの最小インストールに含まれるすべてのモジュールに対するエントリが含まれています。また、BasicAuthenticationModule に対するエントリ、および ImageCopyrightModule サードパーティ モジュールに対するエントリも含まれています。

<globalModules>
   <add name="UriCacheModule"
      image="%windir%\System32\inetsrv\cachuri.dll" />

   <add name="FileCacheModule"
      image="%windir%\System32\inetsrv\cachfile.dll" />
   <add name="TokenCacheModule"
      image="%windir%\System32\inetsrv\cachtokn.dll" />
   <add name="HttpCacheModule"
      image="%windir%\System32\inetsrv\cachhttp.dll" />
   <add name="StaticCompressionModule"
      image="%windir%\System32\inetsrv\compstat.dll" />
   <add name="DefaultDocumentModule"
      image="%windir%\System32\inetsrv\defdoc.dll" />
   <add name="DirectoryListingModule"
      image="%windir%\System32\inetsrv\dirlist.dll" />

   <add name="ProtocolSupportModule"
      image="%windir%\System32\inetsrv\protsup.dll" />
   <add name="StaticFileModule"
      image="%windir%\System32\inetsrv\static.dll" />
   <add name="AnonymousAuthenticationModule"
      image="%windir%\System32\inetsrv\authanon.dll" />
   <add name="RequestFilteringModule"
      image="%windir%\System32\inetsrv\modrqflt.dll" />
   <add name="CustomErrorModule"
      image="%windir%\System32\inetsrv\custerr.dll" />
   <add name="HttpLoggingModule"
      image="%windir%\System32\inetsrv\loghttp.dll" />

   <add name="RequestMonitorModule"
      image="%windir%\System32\inetsrv\iisreqs.dll" />
   <add name="BasicAuthenticationModule"
      image="%windir%\System32\inetsrv\authbas.dll" />
   <add name="ImageCopyrightModule"
      image="%windir%\System32\inetsrv\ImageCopyrightModule.dll" />
</globalModules>

サンプル コード

次の例では、ImageCopyrightModule というネイティブ モジュールを IIS 7.0 にインストールし、サーバー全体で自動的に有効にしています。

AppCmd.exe

appcmd.exe install module /name:ImageCopyrightModule /image:%windir%\system32\inetsrv\imageCopyrightModule.dll

次の構文を使用することもできます。

appcmd.exe set config -section:system.webServer/globalModules /+"[name='ImageCopyrightModule',image='%windir%\system32\inetsrv\imageCopyrightModule.dll']" /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 globalModulesSection = config.GetSection("system.webServer/globalModules");
         ConfigurationElementCollection globalModulesCollection = globalModulesSection.GetCollection();
         ConfigurationElement addElement = globalModulesCollection.CreateElement("add");
         addElement["name"] = @"ImageCopyrightModule";
         addElement["image"] = @"%windir%\system32\inetsrv\imageCopyrightModule.dll";
         globalModulesCollection.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 globalModulesSection As ConfigurationSection = config.GetSection("system.webServer/globalModules")
      Dim globalModulesCollection As ConfigurationElementCollection = globalModulesSection.GetCollection
      Dim addElement As ConfigurationElement = globalModulesCollection.CreateElement("add")
      addElement("name") = "ImageCopyrightModule"
      addElement("image") = "%windir%\system32\inetsrv\imageCopyrightModule.dll"
      globalModulesCollection.Add(addElement)
      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var globalModulesSection = adminManager.GetAdminSection("system.webServer/globalModules", "MACHINE/WEBROOT/APPHOST");
var globalModulesCollection = globalModulesSection.Collection;

var addElement = globalModulesCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "ImageCopyrightModule";
addElement.Properties.Item("image").Value = "%windir%\\system32\\inetsrv\\imageCopyrightModule.dll";
globalModulesCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set globalModulesSection = adminManager.GetAdminSection("system.webServer/globalModules", "MACHINE/WEBROOT/APPHOST")
Set globalModulesCollection = globalModulesSection.Collection

Set addElement = globalModulesCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "ImageCopyrightModule"
addElement.Properties.Item("image").Value = "%windir%\system32\inetsrv\imageCopyrightModule.dll"
globalModulesCollection.AddElement addElement

adminManager.CommitChanges()