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 を使用してカスタム構成セクションを作成する