構成構造
ASP.NET 構成ファイルは Web.config ファイルと呼ばれ、ASP.NET アプリケーション内の複数のディレクトリに存在する場合があります。 ASP.NET 構成階層には次の特徴があります。
構成ファイルが配置されているディレクトリとそのすべてのサブディレクトリ内のリソースに適用される構成ファイルを使用します。
構成データを適切な範囲 (コンピューター全体、すべての Web アプリケーション、単一のアプリケーション、またはそのアプリケーション内のサブディレクトリ) を与える場所に配置できます。
構成階層の上位レベルから継承した構成設定をオーバーライドできます。また、構成設定をロックして、下位レベルの構成設定によって上書きされるのを防ぐこともできます。
構成設定の論理グループをセクションに整理します。
構成の継承
すべての .NET Framework アプリケーションは、systemrootMicrosoft .NETFrameworkversionNumberCONFIGMachine.config という名前のファイルから基本的な構成設定とデフォルトを継承します。 Machine.config ファイルは、サーバー レベルの構成設定に使用されます。これらの設定の一部は、階層の下位にある構成ファイルでは上書きできません。
.NET クライアント アプリケーション (コンソールおよび Windows アプリケーション) は、ApplicationName.config という名前の構成ファイルを使用して、継承された設定をオーバーライドします。 ASP.NET アプリケーションは、Web.config という名前の構成ファイルを使用して、継承された設定をオーバーライドします。
ASP.NET 構成階層のルートは、ルート Web.config ファイルと呼ばれるファイルで、Machine.config ファイルと同じディレクトリにあります。ルートの Web.config ファイルは、Machine.config ファイルからすべての設定を継承します。ルートの Web.config ファイルには、特定のバージョンの .NET Framework を実行するすべての ASP.NET アプリケーションに適用される設定が含まれています。すべての ASP.NET アプリケーションはルートの Web.config ファイルから既定の構成設定を継承するため、既定の設定をオーバーライドする設定の Web.config ファイルを作成するだけで済みます。
コレクション要素の継承
一部の構成要素は、namespaces 要素やcustomErrors 要素など、コレクションです。
コレクションでは、通常、構成設定は add 子要素を通じてコレクションに追加され、remove 子要素を通じてキー名によって削除されます。または、clear 子要素を通じてコレクション全体をクリアできます。重複が許可されない限り、子プロファイルに追加された設定は、親プロファイルの同じキー名の設定をオーバーライドします。
.NET Framework の以前のバージョンに存在していた一部のコレクションでは、子要素の追加に異なる要素名が使用されていたことに
注意してください
。たとえば、customErrors 要素は、error 子要素を使用してカスタム エラーをコレクションに追加します。
SubDir1 ディレクトリに存在しないファイルに対する要求を受信した場合、ASP.NET は構成階層の検索を開始し、最もローカルな Web.config ファイルから開始します (存在する場合は、現在のディレクトリまたはそのディレクトリにある可能性があります)。現在のディレクトリにある場合があります)。 ASP.NET は、customErrors のエラー要素 (ASP.NET 設定スキーマ) 要素で、「404」に等しい statusCode 属性を検索します。 ASP.NET が構成設定で 404 エラーを検出すると、リダイレクト属性の URL が応答として返されます。
構成設定の範囲
構成設定にはさまざまなスコープがあります。グローバル スコープを持つものもあれば、アプリケーション スコープ (ルート Web.config ファイルまたは Machine.config ファイル) に対してのみ有効なものもあります。
構成セクションのスコープは、Machine.config ファイルの configSections セクション要素 (全般設定スキーマ) 要素のallowDefinition 属性で、ASP.NET に含まれるすべてのセクションに対して定義されます。たとえば、認証要素 (ASP.NET 設定スキーマ) 要素には、MachineToApplication 要素のallowDefinition 属性があります。これは、アプリケーション レベルの Machine.config ファイル、ルートの Web.config ファイル、および Web.config ファイルで認証要素を設定できることを意味します。サブディレクトリ レベルで設定されている場合、エラーがスローされます。セクションに対してallowDefinition属性が定義されていない場合、デフォルト値はEverywhereです。
ASP.NET 構成設定および一般構成設定 (ASP.NET) の各要素の構成設定の範囲は、要素情報表の「構成可能」の横にリストされています。
次の表に、構成階層内の各ファイルのレベル、各ファイルの名前、および各ファイルの重要な継承特性の説明を示します。
構成レベル | ファイル名 | ファイルの説明 |
サーバー | Machine.config | Machine.config ファイルには、サーバー上のすべての Web アプリケーションの ASP.NET スキーマが含まれています。このファイルは、構成マージ階層の最上位にあります。 |
ルート Web | Web.config | サーバーの Web.config ファイルは Machine.config ファイルと同じディレクトリに保存され、system.web 構成セクションのほとんどのデフォルト値が含まれています。実行時に、このファイルは構成階層の上から 2 番目のレベルからマージされます。 |
サイト | Web.config | 特定のサイトの Web.config ファイルには、そのサイトに適用され、そのサイトのすべての ASP.NET アプリケーションおよびサブディレクトリに継承される設定が含まれています。 |
ASP.NET アプリケーションのルート | Web.config | 特定の ASP.NET アプリケーションの Web.config ファイルは、アプリケーションのルート ディレクトリにあり、このファイルにはセットアップが含まれています。 |
ASP.NET アプリケーション サブディレクトリ | Web.config | アプリケーション サブディレクトリの Web.config ファイルには、このサブディレクトリに適用される設定が含まれており、そのブランチ内のすべてのサブディレクトリに継承されます。 |
クライアント アプリケーション ディレクトリ | ApplicationName.configApplicationName.config | ファイルには、Windows クライアント アプリケーション (Web アプリケーションではない) の設定が含まれています。 |
ProcessModel 要素
processModel 要素 (ASP.NET 設定スキーマ) 要素は、サーバー (サーバー上のすべての ASP.NET アプリケーションを含む) に使用される処理モデルを構成します。したがって、processModel 設定は Machine.config ファイルにのみ配置でき、Web.config ファイルの設定によって上書きすることはできません。
processModel 要素への変更は、他の構成要素のように設定変更の直後ではなく、ワーカー プロセスの再起動後にのみ有効になります。
注:
ASP.NET がワーカー プロセス分離モードのインターネット インフォメーション サービス (IIS) 6.0 で実行される場合、IIS 6.0 プロセス モデルが使用され、Machine.config ファイルの processModel セクションの設定は無視されます。プロセス ID、ラウンドロビン、またはその他のプロセス モデル値を構成するには、IIS マネージャーを使用してアプリケーションの IIS ワーカー プロセスを構成します。
構成設定の実行時計算
サーバーが特定の Web リソースに対する要求を受信すると、ASP.NET は、要求された URL の仮想ディレクトリ パスにあるすべての構成ファイルを使用して、そのリソースの構成設定を階層的に計算します。ローカル構成設定は、親構成ファイルの設定をオーバーライドします。
これらの設定は一度計算され、後続のリクエストのためにキャッシュされます。 ASP.NET は、ファイルへの変更を自動的に監視し、ファイル階層内の構成ファイルが変更されるとキャッシュを再計算します。サーバーが特定の URL に対する要求を受信すると、ASP.NET はキャッシュ内の構成設定の階層を使用して、要求されたリソースを見つけます。
restartOnExternalChanges="false" 属性が構成セクション要素に含まれている場合、または構成設定が configSource 属性を使用して Web.config ファイルにリンクされた別のファイルに含まれている場合を除き、構成が変更されるとアプリケーションは再起動されます。
1 つのファイルで構成された複数の ASP.NET リソース
複数の場所の設定を 1 つの Web.config ファイルに保存すると、多数の構成設定を管理したり、ISP 設定でクライアント Web サイトを管理したりするときに役立ちます。 location 要素の path 属性を使用すると、アプリケーションのサブディレクトリに格納されている複数の特定の ASP.NET リソースを構成できます。
location 要素の使用方法については、「方法: 場所の設定を使用して特定のディレクトリを構成する」を参照してください。
仮想ディレクトリの設定が物理ディレクトリの設定と競合する
仮想ディレクトリの構成設定は物理ディレクトリ構造とは独立しているため、構成上の問題を防ぐために仮想ディレクトリを慎重に編成する必要があります。たとえば、次の物理ディレクトリ構造を持つ MyResource.aspx という名前の ASP.NET ファイルがあるとします。
C:
Subdir1
Subdir2
MyResource.aspx
さらに、構成ファイルが Subdir1 に配置され、Vdir1 という名前の仮想ディレクトリが c:Subdir1 にマップされ、Vdir1 という名前の仮想ディレクトリが c:Subdir1Subdir2 にマップされる場合があります。 Vdir2のディレクトリ。クライアントが URL http://localhost/vdir1/subdir2/MyResource.aspx を使用して、物理的に c:Subdir1Subdir2MyResource.aspx にあるリソースにアクセスする場合、リソースは Vdir1 から構成設定を継承します。ただし、クライアントが URL http://localhost/vdir2/MyResource.aspx を使用して同じリソースにアクセスする場合、リソースは Vdir1 から設定を継承しません。この方法で仮想ディレクトリを作成すると、予期しない結果が発生したり、アプリケーションが失敗したりする可能性があります。仮想ディレクトリをネストしないでください。ネストする必要がある場合は、Web.config ファイルを 1 つだけ使用することをお勧めします。
ASP.NET 継承の制限
アプリケーションのパフォーマンスを向上させ、高い信頼性を維持し、管理を簡素化するために、構成設定の継承を制限することができます。制限機能は、allowOverride、lockAttributes、lockAllAttributesExcept、lockAllElementsExcept、lockItem、および lockElements プロパティによって制御されます。これらのプロパティの詳細については、msdn を参照してください。