次の方法で共有


ASP.NET の構成のシナリオ

更新 : 2007 年 11 月

サーバーが特定の Web リソースに対する要求を受け取ると、ASP.NET は要求された URL の仮想ディレクトリ パスにあるすべての構成ファイルを使用して、そのリソースの構成設定を階層的に計算します。大半のローカル構成設定は、親構成ファイル内の設定をオーバーライドします。

構成のシナリオ 1

たとえば、次に示すような物理ファイル構造を持った Web サイトがあり、Application Root ディレクトリはアプリケーションの仮想ディレクトリだとします。

dtbwsx8s.folders2(ja-jp,VS.90).gif

通常、最後の構成設定が親ディレクトリで提供された同じセクションの設定を上書きします。コレクション要素の場合、設定はオーバーライドされず、コレクションに追加されます。

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

カスタム セクション ハンドラでは、異なる継承スキームを実装できます。

ここで、SubDir1 ディレクトリに Web.config ファイルが存在し、Application Root ディレクトリと SubDir2 ディレクトリには Web.config ファイルが存在しないとします。この場合、ASP.NET は SubDir1 ディレクトリの構成設定を計算するために 3 つの構成ファイルを使用します。最上位ファイルは、%systemroot%\Microsoft .NET \Framework\versionNumber\CONFIG ディレクトリにあるファイルです。このファイルの名前は Machine.config であり、コンピュータ レベルで存在します。.NET Framework の指定のバージョン (versionNumber) を実行するすべての .NET Framework アプリケーションは、このファイルから設定を継承します。次に上位にあるファイルはルート Web.config ファイルであり、同じ場所に位置します。.NET Framework の指定のバージョンを実行するすべての ASP.NET アプリケーションは、この設定を継承します。第 3 の構成ファイルは Web.config ファイルであり、SubDir1 ディレクトリに位置します。

SubDir1 ディレクトリの Web.config ファイルに、enabled 属性を true に設定した anonymousIdentification 要素が含まれる場合を考えます。enabled 属性の既定の設定は false です。これは内部の既定の設定であり、ルート構成ファイルのいずれでも指定されていません。Application Root ディレクトリまたは SubDir2 ディレクトリ内に、anonymousIdentification 要素を変更する構成ファイルが存在しないので、匿名ユーザーはこれらのディレクトリ内の ASP.NET リソースにアクセスできません。ただし、匿名ユーザーは SubDir1 ディレクトリ内の ASP.NET リソースにアクセスできます。

dtbwsx8s.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

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

構成のシナリオ 2

次の Web サイトのファイル構造では、アプリケーションの仮想ディレクトリがアプリケーションのルート ディレクトリ (MyAppRootDir) に対応します。

MyAppRootDir
    SubDir1
        SubDir1A
    SubDir2

ASP.NET 構成ファイルの階層と継承」の「ASP.NET の継承の制限」セクションに記載された条件に該当する場合を除いて、親ディレクトリに記述された設定はどのディレクトリ内の構成設定によってもオーバーライドされます。たとえば次の手順では、MyAppRootDir および SubDir2 内の ASP.NET リソースに対するすべてのユーザー アクセスを許可するアプリケーション設定を構成しながら、SubDir1 および SubDir1A 内の ASP.NET リソースに対して選択したユーザーにだけアクセスを許可しています。

  1. MyAppRootDir の設定をそのままにします。MyAppRootDir の ASP.NET リソースは、匿名のアクセスを許可するファイルの 1 つである Machine.config ファイルから既定の設定を継承します。この段階では、MyAppRootDir とその 3 つのサブディレクトリでこの認証設定が継承されます。

  2. 認証設定により選択したユーザーにだけ SubDir1 へのアクセスを許可する SubDir1 に Web.config ファイルを配置します。これにより、Machine.config ファイルの設定により許可された匿名アクセスがオーバーライドされ、それが下方の SubDir1A に継承されます。SubDir1 と同じレベルに位置する SubDir1 は、SubDir2 内の認証設定を継承しません。

すべての ASP.NET アプリケーションは、ルート Web レベルに位置する Web.config ファイルの既定の設定を継承します。このファイルのセキュリティ構成セクションの既定の設定では、すべてのユーザーがすべての URL リソースにアクセスできます。この例では、セキュリティを変更する構成ファイルがアプリケーションのルート ディレクトリに存在しないため、すべてのユーザーはこのディレクトリにある ASP.NET リソースにアクセスできます (このディレクトリのセキュリティ設定がマシン レベルの構成ファイルから継承されるため)。SubDir1 ディレクトリの Web.config ファイルに、特定のユーザーだけにアクセスを許可するセキュリティ構成セクションが含まれている場合、SubDir1A はその設定を継承します。したがって、アプリケーションのルート ディレクトリおよび SubDir2 にある ASP.NET リソースにはすべてのユーザーがアクセスできますが、SubDir1 と SubDir1A にある ASP.NET リソースには選択したユーザーしかアクセスできません。

構成のシナリオ 3

仮想ディレクトリは、アクセス パスの簡略化と実際のディレクトリ名の隠蔽を目的とするディレクトリ表示名であり、その構成設定は物理ディレクトリ構造に依存しません。そのため、仮想ディレクトリは慎重に編成しないと構成の問題が発生します。たとえば、次の物理ディレクトリ構造から MyResource.aspx という名前の ASP.NET ページを取得する仮想ディレクトリを設定できます。

MyDir
    SubDir1 (mapped from VDir1)
        SubDir1A (mapped from VDir1A)
            MyResource.aspx
    SubDir2

この例では、SubDir1 内に Web.config ファイルがあり、SubDir1A 内に別の Web.config ファイルがあります。クライアントが、C:\Subdir1\Subdir1A\MyResource.aspx に https://localhost/vdir1/subdir1A/MyResource.aspx という URL を使用してアクセスすると、このリソースは Vdir1 の構成設定を継承します。しかし、このクライアントが同じリソースに https://localhost/vdir1A/MyResource.aspx という URL を使用してアクセスすると、このリソースは Vdir1 の構成設定を継承しません。したがって、このような方法で仮想ディレクトリを作成することは、予期しない結果が生じる場合があり、アプリケーション エラーが発生する場合もあるために、お勧めできません。

インターネット インフォメーション サービス (IIS: Internet Information Services) は、Web 上に発行されるすべてのリソースのために使用できる Web サーバーです。ASP.NET 構成システムは、ASP.NET リソースにのみ適用されます。ASP.NET リソースとは、Aspnet_isapi.dll を使用して ASP.NET によって処理されるように登録されているリソースのことです。既定では、構成システムは非 ASP.NET リソースに対してはセキュリティを提供しません。たとえば ASP ファイル、HTML ファイル、TXT ファイル、GIF ファイル、JPEG ファイルには、すべてのユーザーがアクセスできます。上の例で、ディレクトリ参照が有効にされていて、その他の制限が設定されていない場合、アプリケーションのルート ディレクトリ、SubDir1、および SubDir2 にある非 ASP.NET ファイルは、すべてのユーザーが参照できます。

参照

その他の技術情報

ASP.NET Web サイトの管理

アプリケーションの設定