次の方法で共有


ASP.NET 構成 API の概要

更新 : 2007 年 11 月

ASP.NET 構成 API では、単一のプログラミング インターフェイスを使用することにより、アプリケーション構成データを開発、配置、および管理できます。構成 API を使用することにより、構成ファイル内の XML を直接編集しなくても、完全な ASP.NET 構成をプログラムから作成および変更できます。さらに、開発するコンソール アプリケーションとスクリプト、Web ベースの管理ツール、および Microsoft 管理コンソール (MMC: Microsoft Management Console) スナップインで構成 API を使用できます。次の 2 つの構成管理ツールは、構成 API を使用し、.NET Framework Version 2.0 に含まれています。

  • ASP.NET の MMC スナップ インは、管理タスクを簡素化するために構成 API を使用し、全レベルの構成階層からのローカル構成データに関する統合された視点を提供します。

  • Web サイト管理ツールでは、ホストされたサイトを含めて、ローカル アプリケーションおよびリモート アプリケーションの構成設定を管理できます。

ASP.NET 構成 API は、インターネット インフォメーション サービス (IIS: Internet Information Services) のプログラムによる構成 API とは別々のものです。詳細については、「Using IIS Programmatic Administration」を参照してください。

構成 API の機能

ASP.NET 構成 API は、Web サイトおよびアプリケーションをプログラムにより構成するために使用できる一連の ASP.NET 管理オブジェクトから構成されます。管理オブジェクトは、.NET Framework クラス ライブラリとして実装されます。構成 API プログラミング モデルは、コンパイル時にデータ型を強制することにより、コードの一貫性と信頼性を確実なものにします。

構成 API では、アプリケーション構成の管理を容易にするために、異なる構成ファイルからの別個のコレクションとしてデータを表示するのではなく、構成階層のすべてのポイントから単一のコレクションとしてデータを結合して表示できます。さらに構成 API により、構成ファイル内の XML を直接編集することなく、アプリケーション構成全体を操作できます。最後に、構成 API は Web サイト管理ツールなどの管理ツールのサポートにより構成タスクを簡素化します。

構成 API は、コンピュータ上の構成ファイルの作成をサポートすると共に、複数のコンピュータ間で構成スクリプトを実行することにより、配置を簡素化します。

構成 API は、IIS アプリケーションの作成をサポートしません。IIS の管理アプリケーション記述の詳細については、IIS SDK の「Using System.DirectoryServices to Configure IIS」を参照してください。

ローカルの構成設定およびリモートの構成設定の操作

Configuration オブジェクトは、コンピュータなどの物理エンティティ、またはアプリケーションや Web サイトなどの論理エンティティに適用される構成設定の結合されたビューを表すものです。指定した論理エンティティをローカル コンピュータまたはリモート サーバー上に配置できます。

指定したエンティティの構成ファイルが存在しない場合、Configuration オブジェクトは Machine.config ファイルにより定義される既定の構成設定を表します。

以下に示すクラスのオープン構成メソッドのいずれかを使用することにより、Configuration オブジェクトを取得できます。

  • ConfigurationManager クラス (エンティティがクライアント アプリケーションである場合)

  • WebConfigurationManager クラス (エンティティが Web アプリケーションである場合)

これらのメソッドは Configuration オブジェクトを返します。このオブジェクトは、基になる構成ファイルを処理するために必要なメソッドとプロパティを提供します。これらのファイルにアクセスして、読み取りまたは書き込みを行うことができます。

  • 読み取り   構成情報の読み取りでは、GetSection メソッドまたは GetSectionGroup メソッドを使用します。読み取りを行うユーザーまたはプロセスは、階層内のすべての構成ファイルについて読み取りアクセス許可を持つ必要があります。

    ms228060.alert_note(ja-jp,VS.90).gifメモ :

    path パラメータを受け取る静的な GetSection メソッドを使用する場合は、path パラメータでコードを実行中のアプリケーションを参照する必要があります。メソッドを使用しない場合は、パラメータは無視され、現在実行中のアプリケーションの構成情報が返されます。

  • 書き込み   構成情報の書き込みでは、Save メソッドのいずれかを使用します。書き込みを行うユーザーまたはプロセスは、現在の構成階層レベルの構成ファイルおよびディレクトリに対する書き込みアクセス許可と、階層内の全構成ファイルの読み取りアクセス許可を持つ必要があります。

指定したエンティティについて継承された構成設定を表す構成ファイルを生成するには、次の構成保存メソッドのいずれかを使用します。

  • Save メソッドは、新しい構成ファイルを作成します。

  • SaveAs メソッドは、別の場所で新しい構成ファイルを生成します。

ms228060.alert_note(ja-jp,VS.90).gifメモ :

リモート コンピュータ上の構成設定へのアクセスを有効にするには、Aspnet_regiis コマンド ライン ツールを使用します。このツールの詳細については、「ASP.NET IIS 登録ツール (Aspnet_regiis.exe)」を参照してください。.NET Framework に含まれる組み込みセクション以外のカスタム構成設定を作成し、それにアクセスする方法については、「ConfigurationSection」を参照してください。

コード例

ASP.NET ページ内から以下のコードを使用することにより、ASP.NET ページを実行するアプリケーションに関する構成情報を取得できます。このコード例では、静的な WebConfigurationManager.GetSection メソッドを使用しています。

System.Web.Configuration.UrlMappingsSection urlMaps =
    (System.Web.Configuration.UrlMappingsSection)
    System.Web.Configuration.WebConfigurationManager.GetSection(
    "system.web/urlMappings");
Bool urlMappingsEnabled = urlMaps.IsEnabled;

ASP.NET アプリケーションまたはクライアント アプリケーションから次のコードを使用することにより、個別のアプリケーションに関する構成情報を取得できます。このコード例では、System.Configuration.Configuration オブジェクトの非静的な GetSection メソッドを使用しています。

System.Configuration.Configuration config =
    System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(
    "/SampleWebApp");
System.Web.Configuration.UrlMappingsSection urlMaps =
    (System.Web.Configuration.UrlMappingsSection)
    System.Web.Configuration.WebConfigurationManager.GetSection(
    "system.web/urlMappings");
bool urlMappingsEnabled = urlMaps.IsEnabled;

構成のクラスと名前空間

構成のクラスとメソッドは、その多くが相互に類似しています。次の表に、最も一般的に使用される構成クラスと名前空間を示します。これらのクラスと名前空間に関する使い方のシナリオとコード例については、「構成クラスの使用」を参照してください。

構成のクラスと名前空間

説明

System.Configuration 名前空間

すべての .NET Framework アプリケーションの主な構成クラスを含みます。これには、「.NET Framework の構成ファイル スキーマ」で定義された .NET Framework クライアント構成セクションのセクション ハンドラ クラスが含まれます。セクション ハンドラ クラスは、GetSectionGetSectionGroup などのメソッドからのセクションに対する構成データを取得するために使用されます。これらの 2 つのメソッドは、非静的です。詳細については、このトピックで前述した「静的メソッドおよび非静的メソッドの操作」を参照してください。

ASP.NET セクション ハンドラ クラスは、System.Web.Configuration 名前空間に含まれます。

System.Configuration.Configuration クラス

コンピュータ、アプリケーション、Web ディレクトリ、またはその他のリソースに対する一連の構成データを表します。Configuration クラスのインスタンスは、階層内に含まれる結合された構成設定に対応します。

このクラスには、GetSectionGetSectionGroup など、構成設定を更新したり、セクションおよびセクション グループへの参照を取得したりするための有用なメソッドが含まれます。これらの 2 つのメソッドは、非静的です。詳細については、このトピックで前述した「静的メソッドおよび非静的メソッドの操作」を参照してください。

このクラスは、デザイン時の構成データを取得する WebConfigurationManager クラスおよび ConfigurationManager クラスのメソッドなどで、戻り値の型として使用されます。

System.Web.Configuration 名前空間

ASP.NET 構成設定」で定義された ASP.NET 構成セクションのセクション ハンドラ クラスを含みます。セクション ハンドラ クラスは、GetSectionGetSectionGroup などのメソッドからのセクションに対する構成データを取得するために使用されます。これらの 2 つのメソッドは、静的です。詳細については、このトピックで前述した「静的メソッドおよび非静的メソッドの操作」を参照してください。

System.Web.Configuration.WebConfigurationManager クラス

実行時およびデザイン時の構成設定への参照を取得するための有用なメソッドを提供します。これらのメソッドは、戻り値の型として System.Configuration.Configuration クラスを使用します。このクラスの静的な GetSection メソッド、または System.Configuration.ConfigurationManager クラスの非静的な GetSection メソッドは、置き換えて使用できます。詳細については、このトピックで前述した「静的メソッドおよび非静的メソッドの操作」を参照してください。

Web アプリケーションの構成では、System.Configuration.ConfigurationManager クラスではなく System.Web.Configuration.WebConfigurationManager クラスを使用することをお勧めします。

System.Configuration.Provider 名前空間

構成プロバイダをカスタマイズおよび拡張する手段を提供します。これは、構成システム内のすべてのプロバイダ クラスの基本クラスです。

System.Web.Management 名前空間

Web アプリケーションの状態を管理および監視するためのクラスおよびインターフェイスが含まれています。厳密に言うと、この名前空間は構成 API の一部とは見なされません。たとえば、トレースおよびイベントの発生は、この名前空間内のクラスにより実行されます。詳細については、「ASP.NET のトラブルシューティングとデバッグ」を参照してください。

System.Management.Instrumentation 名前空間

アプリケーションのインストルメンテーションに必要なクラスを提供し、 Windows Management Instrumentation (WMI) を通じてアプリケーションの管理情報とイベントを潜在的なコンシューマに公開します。ASP.NET Health Monitoring は、WMI を使用してイベントを配信します。厳密に言うと、この名前空間は構成 API の一部とは見なされません。

構成クラスの継承構造

次の図は、System.Web.Configuration 名前空間のクラスと System.Configuration 名前空間のクラスの継承関係を示しています。この図で、どのプロパティおよびメソッドが現在インスタンス化済みであるオブジェクトで利用可能であるかを理解すると共に、より詳細な情報の参照方法を確認できます。

構成クラスでの継承

構成クラスの集約構造

次の図は、System.Web.Configuration 名前空間のクラスと System.Configuration 名前空間のクラスの集約関係を示しています。この図で、他クラス内のオブジェクトとしてインスタンス化されるクラスについて理解できます。

ASP .NET 構成ダイアグラム

専用ツールの構築

多くの管理者に対して、特定の Web サイトやアプリケーションなどの割り当てられたリソースを管理しながら、他のリソースに対して実行できる操作を制限することが必要になる場合があります。ASP.NET 構成 API を使用することにより、管理者が作業を行うために必要になる構成設定のみを開示し、同時に他の設定へのアクセスを拒否する管理ツールを開発できます。これにより、構成ファイルに直接アクセスする必要性がなくなり、管理者には権限を与えたうえで、リソースを保護できます。

複数のサーバーのツール

複数のサーバーを管理する場合、各サーバー上に同じ ASP.NET アプリケーションを配置して管理することが必要になる場合があります。たとえば、Web ファームを管理する場合、以下のタスクが必要になることがあります。

  • Web ファームのすべてまたはいずれかのサーバー上に同じ ASP.NET アプリケーションを構成するスクリプトを記述します。

  • アプリケーションの各インスタンスで使用する一部のファイルをロックします。

  • 各コンピュータ上でインストールが同じ方法で構成されるように、配置済みアプリケーションの構成を記録する監査を自動化します。

  • 構成の変更の編集作業を一度行った後、インストールされているすべてのアプリケーション インスタンスに変更を適用します。

さらに、ASP.NET 構成 API は、複数のサーバーにまたがるバッチの実行をサポートします。

単一のツールを使用した構成の作成と管理

サイトの所有者は、ASP.NET MMC スナップインを使用して、コンピュータ上の ASP.NET アプリケーションの構成を作成および管理できます。ASP.NET MMC スナップインは、グラフィカル ユーザー インターフェイスを通じて ASP.NET 構成 API の機能を公開します。ASP.NET MMC スナップインは、セッション、セキュリティ、エラー、トレースなど、複数の構成ファイルの構成設定に関する統一されたビューを提供します。構成ファイル内の XML を直接編集することなく、設定を変更できます。詳細については、「ASP.NET 用 MMC スナップイン」を参照してください。

参照

処理手順

方法 : プログラムによって ASP.NET 構成設定にアクセスする

方法 : Web.config ファイルからアプリケーション設定を読み取る

方法 : Web.config ファイルから接続文字列を読み取る

概念

構成クラスの使用

その他の技術情報

ASP.NET 構成 API