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

概要

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

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

サード パーティのモジュールをインストールするときは、そのモジュールのエントリを <globalModules> 要素に追加する必要があります。 これは、IIS マネージャーを使って、ApplicationHost.config ファイルを手動で編集して、または AppCmd.exe コマンドライン ツールを使って、行うことができます。

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

互換性

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

段取り

<globalModules> 要素は 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. [接続] ウィンドウで、ネイティブ モジュールを追加するサーバー接続をクリックします。

  3. サーバーのホーム ページで、[モジュール] をダブルクリックします。
    MIME の種類、モジュール、出力キャッシュ、サーバー証明書、ワーカー プロセスというタイトルの 5 つのアイコンのスクリーンショット。[モジュール] というタイトルのアイコンが強調表示されています。

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

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

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

  7. [パス] ボックスに、.dll ファイルの場所のファイル システム パスを入力するか、[参照] ボタンをクリックします
    ファイル システムのパスと場所の名前を示す [パス] ボックスのスクリーンショット。d d l ファイル。

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

    Note

    ネイティブ モジュールを実行できるようにしたくない場合は、ネイティブ モジュールのオプションをオフにして、[OK] をクリックします。

  9. 必要に応じて、ネイティブ モジュールが構成システムの下位レベルでオーバーライドされないようにする場合は、それをロックできます。 [モジュール] ページでモジュールを選び、[操作] ウィンドウで [ロック] をクリックします。

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

  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. 管理するサーバー、サイト、またはアプリケーションのレベルに移動します。

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

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

  5. [ネイティブ モジュールの構成] ダイアログ ボックスで、有効にするネイティブ モジュールのオプションを選んで、[OK] をクリックします。
    [ネイティブ モジュールの構成] ダイアログ ボックスのスクリーンショット。UriCacheModule というタイトルの登録済みモジュールが選択されています。

構成

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

属性

なし。

子要素

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

グローバル モジュールのコレクションにネイティブ モジュールを追加します。
clear 省略可能な要素です。

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

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

構成サンプル

次に示すのは、Web サーバーの最小インストールに含まれるすべてのモジュールのエントリを含む IIS 7 の <globalModules> セクションの例です。 また、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 にインストールし、サーバー全体でそれを自動的に有効にしています。

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

Note

AppCmd.exe を使用してこれらの設定を構成するときは、commit パラメーターを必ず apphost に設定する必要があります。 これで、ApplicationHost.config ファイルの適切な場所セクションに構成設定がコミットされます。

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()