単純な IIS マネージャー モジュールを作成する方法

公開日: 2007 年 12 月 18 日 (作業者: iisteam (英語))

更新日: 2008 年 3 月 7 日 (作業者: iisteam (英語))

はじめに

新しい IIS 7 Web 管理ツールは拡張可能な開発プラットフォームです。サード パーティは、独自の管理機能を開発・インストールして、このツールの最上級機能として提供できます。この記事では、以下のようなタスクについて説明します。

  • Microsoft Visual Studio または Microsoft Visual C# Express でプロジェクトを作成し、InetMgr 内でライブラリを使用できるようにする
  • 単純なモジュール プロバイダーを作成する
  • メッセージ ボックスを表示する単純なモジュールを作成する

タスク 1: プロジェクトの作成

InetMgr の拡張機能モジュールを作成するには、DLL プロジェクト (クラス ライブラリ プロジェクトとも呼ばれる) を作成します。この DLL には、InetMgr で使用するモジュールの要件である GAC (グローバル アセンブリ キャッシュ) への登録を行えるように、厳密な名前を付ける必要があります。

  1. [スタート] ボタン、[プログラム] の順にクリックし、[Microsoft Visual Studio 2008] または [Microsoft Visual C# 2008 Express Edition] をクリックして実行します。

  2. [ファイル] メニューの [新規作成] -  [新しいプロジェクト] をクリックします。

  3. [新しいプロジェクト] ダイアログ ボックスで、プロジェクトの種類として [クラス ライブラリ] をクリックし、プロジェクトの名前として「ExtensibilityDemo」と入力します。[OK] をクリックします。

    Ff454034.269_file1(ja-jp,TechNet.10).jpg

  4. 既定で追加されている Class1.cs ファイルは使用しないので、ソリューション エクスプローラーで、コンテキスト メニューの [削除] オプションを使用して削除します。

  5. [プロジェクト] メニューの [参照の追加] をクリックし、[参照] タブで \Windows\system32\inetsrv ディレクトリを検索して、Microsoft.Web.Management.dll への参照を追加します。この DLL には、InetMgr 用のモジュールを作成するために必要なすべての拡張機能クラスが含まれています。

    コードを使用して WinForms ベースの UI を作成するので、System.Windows.Forms.dll への参照を追加する必要があります。これには、[プロジェクト] メニューの [参照の追加] をクリックし、[.NET] タブのアセンブリの一覧から System.Windows.Forms.dll をクリックします。

    ライブラリを InetMgr 内で使用するための要件の 1 つとして、ライブラリを GAC に登録する必要があります。DLL には厳密な名前が付けられていること ("署名されている" ともいう) を確認します。Visual Studio では、新しい名前を簡単に作成できます。[プロジェクト] メニューの [ExtensibilityDemo のプロパティ] をクリックします。

  6. [署名] タブの [アセンブリの署名] チェック ボックスをオンにします。

  7. コンボ ボックスで [<新規作成...>] をクリックして新しいキーを作成します。[厳密な名前キーの作成] ダイアログ ボックスで、キーの名前として「DemoKey.snk」と入力し、[キー ファイルをパスワードで保護する] チェック ボックスをオフにします。[OK] をクリックします。

    Ff454034.269_file2(ja-jp,TechNet.10).jpg

    [署名] タブは次のように表示されます。

    Ff454034.269_file3(ja-jp,TechNet.10).jpg

    アセンブリを GAC に登録する必要があるので、コンパイルのたびに自動的にアセンブリが GAC に追加されるように、ビルド後のイベントをいくつか追加します。これによって、新しい機能を追加する際に、簡単にデバッグや変更を行うことができます。

  8. [ビルド イベント] タブをクリックし、[ビルド後に実行するコマンド ライン] に次のコマンド ラインを追加します。

    CALL "%VS80COMNTOOLS%\vsvars32.bat" > NULL
    
    
    gacutil.exe /if "$(TargetPath)"
    

    Ff454034.269_file4(ja-jp,TechNet.10).jpg

    (省略可能) Microsoft Visual Studio 2008 を使用している場合、デバッグ機能を正しくセットアップして、F5 キーでコードを実行できるようにします。プロジェクトのプロパティを開き、[デバッグ] タブをクリックし、[外部プログラムの開始] をクリックして、\windows\system32\inetsrv\inetmgr.exe を選択します。

    Ff454034.269_file5(ja-jp,TechNet.10).jpg

  9. プロジェクトのプロパティを閉じ、[ファイル] メニューの [すべてを保存] をクリックし、場所として d:\Demos を指定します。[保存] をクリックします。

    Ff454034.269_file6(ja-jp,TechNet.10).jpg

    これで、[ビルド] メニューの [ソリューションのビルド] をクリックしてプロジェクトをコンパイルできます。DLL が自動的にビルドされ、GAC に追加されます。

    : vsvars32.bat を設定するコマンドがエラー コード 9009 で失敗する場合は、手順 8. で [ビルド後に実行するコマンド ライン] に追加したコマンドを、gacutil.exe の完全パスを追加したコマンドに置き換えます。たとえば、次のように入力します。

    "C:\Program Files\Microsoft Visual Studio 9\SDK\v2.0\Bin\gacutil.exe" /if "$(TargetPath)"
    

    それでも失敗する場合は、コンパイル正常終了後に管理者としてコマンドプロンプトを起動し、以下のようにコマンドを実行してください。

    "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\gacutil.exe" /if "生成されたアセンブリ(dll) までのフルパス"
    

タスク 2: モジュール プロバイダーの作成

このタスクでは、モジュール プロバイダーを作成します。モジュール プロバイダーは、InetMgr におけるモジュール登録の主要なエントリ ポイントです。これらのモジュール プロバイダーは Administration.config に記述されます。

  1. [プロジェクト] メニューの [新しい項目の追加] をクリックします。[新しい項目の追加] ダイアログ ボックスで [クラス] テンプレートをクリックし、ファイルの名前として「DemoModuleProvider.cs」と入力します。

    Ff454034.269_file7(ja-jp,TechNet.10).jpg

  2. コードを次のような内容に変更します。

    using System;
    using System.Security;
    using Microsoft.Web.Management.Server;
    namespace ExtensibilityDemo {
        class DemoModuleProvider : ModuleProvider {
            public override Type ServiceType {
                get { return null; }
            }
            public override ModuleDefinition GetModuleDefinition(IManagementContext context) {
                return new ModuleDefinition(Name, typeof(DemoModule).AssemblyQualifiedName);
            }
            public override bool SupportsScope(ManagementScope scope) {
                return true;
            }
        }
    }
    

    このコードは、あらゆる種類の接続 (サーバー、サイト、アプリケーション) をサポートする ModuleProvider を作成し、DemoModule という名前のクライアント側のモジュールを登録します。

タスク 3: モジュールの作成

このタスクでは、モジュールの作成方法を説明します。モジュールは、クライアントにおける、すべての拡張機能オブジェクトの主要なエントリ ポイントです。モジュールには、Initialize というメインのメソッドがあります。このメソッド内で、すべてのアクションが実行されます。

  1. [プロジェクト] メニューの [新しい項目の追加] をクリックします。[クラス] テンプレートをクリックし、ファイル名として「DemoModule.cs」と入力します。

  2. コードを次のような内容に変更します。

    using System;
    using System.Windows.Forms;
    using Microsoft.Web.Management.Client;
    using Microsoft.Web.Management.Server;
    
    
    
    
    
    
    
    
    namespace ExtensibilityDemo {
        internal class DemoModule : Module {
            protected override void Initialize(IServiceProvider serviceProvider, ModuleInfo moduleInfo) {
                base.Initialize(serviceProvider, moduleInfo);
                 MessageBox.Show("Hello World Inside InetMgr");
            }
        }
    }
    

タスク 4: モジュールのテスト

このタスクでは、新しく作成したモジュールを追加します。これには、administration.config ファイルの moduleProviders リストにモジュールを追加する必要があります。

まず、作成したアセンブリの完全な名前を知る必要があります。アセンブリの完全な名前の形式は、"ExtensibilityDemo, Version=1.0.0.0, Culture=neutral, PublicKeyToken={YourKey}" です。Windows エクスプローラーを使用してアセンブリの完全な名前を確認します。

  1. Windows エクスプローラーを開いて、\Windows\Assembly フォルダーに移動します。

  2. アセンブリの一覧から ExtensibilityDemo を探し出し、このアセンブリを右クリックして [プロパティ] をクリックします。表示されたダイアログ ボックスに [公開キー トークン] というフィールドがあります。モジュールを InetMgr に登録するにはこの値が必要なので、クリップボードにコピーします。

    Ff454034.269_file8(ja-jp,TechNet.10).jpg 

  3. Microsoft Visual C# 2008 Express に戻り、[ファイル] メニューの [ファイルを開く] をクリックします。\Windows\System32\InetSrv\Administration.config ファイルを参照します。

  4. <moduleProviders> セクションを見つけて、次の内容を追加します。ただし、公開キー トークン (PublicKeyToken) は手順 2. でコピーしたものに置き換えてください。

    <moduleProviders>
      <add name="ExtensibilityDemo" type="ExtensibilityDemo.DemoModuleProvider, ExtensibilityDemo, 
                              Version=1.0.0.0, Culture=neutral, PublicKeyToken=bed679b1975c7f97" />
    <moduleProviders>
    

    : moduleProviders のリストにのみ追加した場合、このモジュールはサーバー接続用として登録されます。このモジュールをサイト接続やアプリケーション接続についても有効にする場合は、次のリストに追加します。

    <location path=".">
      <module>
        <add name="ExtensibilityDemo" />
    </location>
    
  5. このファイルを保存し、InetMgr を実行して localhost に接続すると、次のメッセージが表示されます。

    Ff454034.269_How_to_create_a_simple_iis_manager_module(ja-jp,TechNet.10).jpg

まとめ

この記事では、Visual Studio プロジェクトを作成して、新しい IIS 7 管理ツール用の拡張機能モジュールを開発する方法について説明しました。単純な ModuleProvider と、対応する Module を作成して、メッセージを表示しました。

これで、IIS 7 管理ツール モジュールを作成するための基本的な手順を習得できました。拡張機能で使用できるさらに興味深い機能について知識を深めていってください。