Win2003 ASP.NET - 設定の継承

  

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


通常の状況では、最後の設定は親ディレクトリにある同じセクションの設定を上書きしますが、セクションハンドラは異なる継承スキームを実行する場合があります。

たとえば、管理者として、すべてのユーザーがアプリケーションルート(つまり、アプリケーションの仮想ディレクトリにマップされる物理パス)内のASP.NETリソースにアクセスできるようにアプリケーションの設定を構成できます。選択したユーザーだけが両方のサブディレクトリのASP.NETリソースにアクセスできます。

Sub.Dir1ディレクトリにはWeb.configファイルがあるが、アプリケーションルートまたはSubDir2ディレクトリにはないとします。この場合、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上のcdir2という名前の仮想ディレクトリマッピングにマップされます。 c:\\ Subdir1 \\ Subdir2に移動します。クライアントがURL http://localhost/vdir1 /subdir 2 /MyResource.aspxを使用して物理パスc:\\ Subdir 1 \\ Subdir 2 \\ MyResource.aspxでリソースにアクセスする場合、リソースはVdir 1から構成設定を継承します。ただし、クライアントがURL http://localhost/vdir2/MyResource.aspxを使用して同じリソースにアクセスする場合、そのリソースは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セキュリティ」を参照してください。


< location>設定の構成
適切なパス属性を指定した< location>タグを使用して、特定のリソースに構成設定を適用できます。 path属性は、特別な構成設定が適用される特定のファイルまたはサブディレクトリを示すために使用できます。

たとえば、次の設定ファイルは3つのレベルで設定を指定します。

現在のディレクトリとすべてのサブディレクトリ、つまり最上位の< configuration>タグに含まれるすべての設定に適用される設定。 。
Sub1サブディレクトリに適用される設定。このサブディレクトリには、pathプロパティがSub1に設定された< location>タグ内のすべてのものが含まれます。
Sub2サブディレクトリに適用される設定。このサブディレクトリには、pathプロパティがSub2に設定された< location>タグ内のすべてのものが含まれます。 < configuration>< system.web>< sessionState cookieless =" true" timeout =" 10> /< /system.web>> <! - " Sub1"サブディレクトリ構成。 - < location path =" sub 1>< system.web>< httpHandlers>< add verb =" *" path ="; Sub1.Scott "type =" Sub1.Scott "/>
< /のhttpHandlers>
< /system.web>
< /位置>

< - "!SUB2"サブディレクトリ構成。 - < location path =" sub 2>< system.web>< httpHandlers>< add verb =" *" path ="; Sub2.Scott "type =" Sub2.Scott "/>
< /httpHandlers>< /system.web>< /location>< /configuration>
< /P>
設定をロック< /B>デフォルトサブディレクトリにある設定ファイルは、親設定ファイルで定義されているすべての設定を上書きして拡張します。アプリケーションホスティングのシナリオでは、管理者は通常、他のユーザーがサイトの特定の設定にアクセスしてこれらの設定が変更されないようにすることをロックまたは禁止します。たとえば、Webユーザーがシステムを攻撃するのを防ぐために、管理者はホストアプリケーションのサンドボックスセキュリティ設定をロックすることができます。

管理者は、< location>ディレクティブにallowOverride =" false"属性を追加することで設定をロックできます。低レベルの設定ファイルがこのlock< location>ディレクティブで定義されている設定セクションのいずれかを上書きしようとするとエラーが発生することを設定システムに通知します。

次のサンプル構成ファイル(メインシステムまたはサイトレベルで格納できます)は、2つの異なるASP.NETアプリケーション(application1とapplication2)の信頼レベルをロックします。

< configuration>< location path =" application1" allowOverride =" false>< system>< system.web><信頼レベル=" High>; />
< /system.web>
< /位置>

<ロケーションパス="アプリケーション2" AllowOverrideの="偽">
<。 System.web>< trust level =" Medium< /gt;< /system.web> /location;< /configuration>使用されている場合以下の例の構成設定は、前の例の構成設定をオーバーライドし、構成システムエラーが生成されます。

< configuration>< system.web>< trust level ="完全" />< /system.web>< /lt; /< /構成>

Copyright © Windowsの知識 All Rights Reserved