次の方法で共有


ASP.NET 構成ファイルの構造 (セクションおよびセクション ハンドラ)

更新 : 2007 年 11 月

すべての ASP.NET 構成情報は、Web.config ファイルの構成要素に含まれます。この要素に含まれる構成情報は、構成セクション ハンドラ宣言領域と、構成セクション設定領域の 2 つに大きく分けられます。

構成セクション ハンドラの宣言

構成セクション ハンドラの宣言領域は、Web.config ファイルの configSections 要素内に位置します。ここには、セクション ハンドラの宣言されている ASP.NET 構成セクション要素が含まれます。こうした構成セクション ハンドラの宣言は、sectionGroup 要素内に入れ子にして構成情報の編成に役立てることができます。一般に、sectionGroup 要素は構成設定の適用される名前空間を表します。たとえば次のコード例では、すべての ASP.NET 構成セクション ハンドラが system.web セクション グループ内にグループ化されています。

    <sectionGroup name="system.web"
      type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
      <!-- <section /> elements. -->
    </sectionGroup>

構成セクション設定領域内には、構成セクションごとにセクション ハンドラの宣言が存在します。セクション ハンドラは、ConfigurationSection インターフェイスを実装した .NET Framework クラスです。セクション ハンドラの宣言には、構成設定セクションの名前 (例 : pages など) およびそのセクション内の構成データを処理するセクション ハンドラ クラスの名前 (例 : System.Web.Configuration.PagesSection など) が含まれます。この方法を次のコード例に示します。

      <section name="pages"
        type="System.Web.Configuration.PagesSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
      </section>

構成セクション ハンドラは、1 回だけ宣言します。既定の ASP.NET 構成セクションのセクション ハンドラは、既定の Machine.config ファイル内に既に宣言されています。ASP.NET アプリケーションのルート Web.config ファイルとその他の構成ファイルは、Machine.config ファイル内で宣言されている構成ハンドラを自動的に継承します。カスタム設定セクションを処理するカスタム セクション ハンドラ クラスを作成する場合は、新しいセクション ハンドラを宣言するだけで済みます。

定義済みの ASP.NET 構成設定セクションについては、「ASP.NET 構成設定」を参照してください。独自のカスタム設定セクションを定義し、それを管理するための独自の構成セクション ハンドラを開発する方法については、「カスタム セクション ハンドラを作成するためのクラス」および「方法 : ConfigurationSection を使用してカスタム構成セクションを作成する」を参照してください。

構成セクションの設定

構成セクション設定領域は構成セクション ハンドラの宣言領域の後に配置し、実際の構成設定を記述します。

既定では、configSections 領域内の各 section および sectionGroup 要素に対して指定される構成セクション要素が内部またはルート構成ファイルの 1 つに存在します。この既定値は、systemroot\Microsoft.NET\Framework\versionNumber\CONFIG\Machine.config.comments ファイル内で確認できます。

また構成セクション要素には、親要素と同じセクション ハンドラによって処理される子要素を含めることができます。たとえば、次の pages 要素に含まれる namespaces 要素は、pages セクション ハンドラにより処理されるので、対応するセクション ハンドラを持ちません。

  <pages
    buffer="true"
    enableSessionState="true"
    asyncTimeout="45"
  <!-- Other attributes. -->
  >
    <namespaces>
      <add namespace="System" />
      <add namespace="System.Collections" />
    </namespaces>
  </pages>

Web.config ファイルの例

次のコード例は、Web.config ファイル内で前述のコード例が含まれる位置を示しています。pages 要素の namespaces 要素に構成セクション ハンドラの宣言がないことに注目してください。これは、System.Web.Configuration.PagesSection のセクション ハンドラが pages 設定セクションのすべての子要素を処理するためです。

<?xml version="1.0" encoding="us-ascii"?>
<configuration>

<!-- Configuration section-handler declaration area. -->
  <configSections>
    <sectionGroup name="system.web"
      type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
      <section
        name="pages" 
        type="System.Web.Configuration.PagesSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
      />
      <!-- Other <section /> elements. -->
    </sectionGroup>
    <!-- Other <sectionGroup /> and <section /> elements. -->
  </configSections>

<!-- Configuration section settings area. -->
  <pages
    buffer="true"
    enableSessionState="true"
    asyncTimeout="45"
  <!-- Other attributes. -->
  >
    <namespaces>
      <add namespace="System" />
      <add namespace="System.Collections" />
    </namespaces>
  </pages>
  <!-- Other section settings elements. -->

</configuration>

編集上の問題

構成セクション内の要素は整形式の XML である必要があるため、要素および属性では大文字と小文字が区別されます。構成設定は、さまざまな方法で編集できます。詳細については、「ASP.NET 構成ファイルの編集」を参照してください。

ASP.NET 構成ファイル内でカスタム セクション要素を使用するには、カスタム構成セクション ハンドラをプログラムにより作成する必要があります。詳細については、「方法 : ConfigurationSection を使用してカスタム構成セクションを作成する」を参照してください。

構成ファイル内の path 属性

Web アプリケーションのパスを参照する場合、Web.config ファイル内の path 属性の先頭でアプリケーション ルートを示す "~/" ショートカットを使用できます。詳細については、「ASP.NET Web サイトのパス」を参照してください。

参照

処理手順

方法 : ConfigurationSection を使用してカスタム構成セクションを作成する

方法 : IConfigurationSectionHandler を使用してカスタム構成セクションを作成する

その他の技術情報

ASP.NET Web サイトの管理

ASP.NET 構成設定

アプリケーションの設定