次の方法で共有


構成の継承

サーバーが特定の Web リソースに対する要求を受け取ると、ASP.NET は要求された URL の仮想ディレクトリ パスにあるすべての構成ファイルを使用して、そのリソースの構成設定を階層的に計算します。たとえば、次に示すようなファイル構造を持った Web サイトがあり、アプリケーションのルート ディレクトリはアプリケーションの仮想ディレクトリ (Vdir) だとします。

通常、最後の構成設定は、それより上位にある各ディレクトリで与えられた同じセクションの設定を上書きしますが、セクション ハンドラには異なる継承スキームが実装されている場合があります。

たとえば、管理者が、アプリケーションのルート ディレクトリ (アプリケーションの仮想ディレクトリによって割り当てられた物理ディレクトリ) にある ASP.NET リソースにはすべてのユーザーがアクセスでき、その 2 つのサブディレクトリにある ASP.NET リソースには特定のユーザーだけがアクセスできるように、アプリケーションを設定したとします。

ここで、SubDir1 ディレクトリに Web.config ファイルが存在し、アプリケーションのルート ディレクトリと SubDir2 ディレクトリには Web.config ファイルが存在しないとします。この場合、ASP.NET では 2 つの構成ファイルが使用されます。最上位ファイルは、systemroot\Microsoft .NET \Framework\versionNumber\CONFIG ディレクトリにあるファイルです。このファイルは Machine.config という名前で、マシン レベルにあり、すべての ASP.NET ディレクトリおよびサブディレクトリでは、この設定が継承されます。Machine.config は .NET Framework に付属しており、さまざまな既定の ASP.NET 設定を含んでいます。このファイルのセキュリティ構成セクションの既定の設定では、すべてのユーザーがすべての URL リソースにアクセスできます。この例では、セキュリティを変更する構成ファイルがアプリケーションのルート ディレクトリに存在しないため、すべてのユーザーはこのディレクトリにある ASP.NET リソースにアクセスできます (このディレクトリのセキュリティ設定がマシン レベルの構成ファイルから継承されるため)。SubDir1 ディレクトリの Web.config ファイルに、特定のユーザーだけにアクセスを許可するセキュリティ構成セクションが含まれている場合、SubDir2 はその設定を継承します。したがって、アプリケーションのルート ディレクトリにある ASP.NET リソースにはすべてのユーザーがアクセスできますが、SubDir1 と SubDir2 にある ASP.NET リソースには特定のユーザーしかアクセスできません。

仮想ディレクトリの構成設定は物理ディレクトリ構造に依存しないため、仮想ディレクトリは構成に関する問題を生じないように慎重に編成する必要があります。たとえば、次に示すディレクトリ構造を持つ、MyResource.aspx というアプリケーションがあるとします。

C:\Subdir1\Subdir2\MyResource.aspx

構成ファイルが Subdir1 にあり、仮想ディレクトリ Vdir1 は c:\Subdir1 に割り当てられ、仮想ディレクトリ Vdir2 は c:\Subdir1\Subdir2 に割り当てられているとします。クライアントが、c:\Subdir1\Subdir2\MyResource.aspx に物理的に位置するリソースに https://localhost/vdir1/subdir2/MyResource.aspx という URL を使用してアクセスすると、このリソースは Vdir1 の構成設定を継承します。しかし、このクライアントが同じリソースに https://localhost/vdir2/MyResource.aspx という URL を使用してアクセスすると、このリソースは Vdir1 の構成設定を継承しません。このような方法で仮想ディレクトリを作成することは、予期しない結果が生じたり、アプリケーション エラーが発生したりする可能性があるため、避ける必要があります。

メモ   ASP.NET の構成システムは、ASP.NET リソース (ASP.NET で Aspnet_isapi.dll を使用して処理されるように登録したリソース) に対してだけ適用されます。構成システムは、既定では ASP.NET リソース以外のリソースに対しては認証を行いません。たとえば ASP ファイル、HTML ファイル、TXT ファイル、GIF ファイル、JPEG ファイルには、すべてのユーザーがアクセスできます。上の例で、ディレクトリ参照が有効にされていて、その他の制限が設定されていない場合、アプリケーションのルート ディレクトリ、SubDir1、および SubDir2 にある非 ASP.NET ファイルは、すべてのユーザーが参照できます。ASP.NET セキュリティの詳細については、「ASP.NET Web アプリケーションのセキュリティ」を参照してください。

参照

ASP.NET の構成 | アプリケーションの設定