2011-01-05 15 views
22

のWeb.Configのロケーションパス要素に複数のディレクトリを指定します。私は次の場所の要素が定義されている私のASP.NETのWeb設定ファイルに

<location path=""> 
    <system.web> 
     <authorization> 
     <deny users="?"/> 
     </authorization> 
    </system.web> 
    </location> 

    <location path="dir1"> 
    <system.web> 
     <authorization> 
     <allow users="?"/> 
     </authorization> 
    </system.web> 
    </location> 

    <location path="dir2"> 
    <system.web> 
     <authorization> 
     <allow users="?"/> 
     </authorization> 
    </system.web> 
    </location> 

上記のすべてのディレクトリをロックダウンされることを指定する例dir1とdir2という2つのディレクトリ以外の匿名ユーザーに配布します。

私は1つの場所要素内に複数のディレクトリを定義できるようにするための構文があるのか​​どうか不思議です。私たちはこのような何かを行うことができれば例えば、それは便利だろう...

<location path="dir1,dir2,etc"> 
    <system.web> 
     <authorization> 
     <allow users="?"/> 
     </authorization> 
    </system.web> 
    </location> 
+2

パスのカンマ区切りのリストを許可すると文書化されていたようですが、文書化された機能を実装するのではなく、ドキュメントを修正しました。 http://connect.microsoft.com/VisualStudio/feedback/details/104010/location-path-attribute-in-web-config-doesnt-accept-multiple-paths – Triynko

+0

@Triynko https://connect.microsoft.com/ VisualStudio/feedback/details/104010/location-path-attribute-in-web-config-doesnt-accept-multiple-pathsが見つからない – Kiquenet

答えて

14

申し訳ありませんが、パスプロパティが使用することはできません「」 ので、あなたはすべてのパスのためのタグを記述する必要があり、 か各ディレクトリにweb.configを作成できます。

34

path属性に複数の要素を指定することはできませんが、configSource属性を使用することはできます。

たとえば、次の元web.configファイル:

<?xml version="1.0"?> 
<configuration> 
    <location path="form1.aspx"> 
    <system.web> 
     <authorization> 
     <allow users="*"/> 
     </authorization> 
    </system.web> 
    </location> 
    <location path="form2.aspx"> 
    <system.web> 
     <authorization> 
     <allow users="*"/> 
     </authorization> 
    </system.web> 
    </location> 
    <location path="form3.aspx"> 
    <system.web> 
     <authorization> 
     <allow users="*"/> 
     </authorization> 
    </system.web> 
    </location> 
    <location path="form4.aspx"> 
    <system.web> 
     <authorization> 
     <deny users="*"/> 
     </authorization> 
    </system.web> 
    </location> 
    <location path="form5.aspx"> 
    <system.web> 
     <authorization> 
     <deny users="*"/> 
     </authorization> 
    </system.web> 
    </location> 
    <location path="form6.aspx"> 
    <system.web> 
     <authorization> 
     <deny users="*"/> 
     </authorization> 
    </system.web> 
    </location> 
</configuration> 

は、以下の同等のweb.config、allow.config、およびdeny.configファイルで置き換えることができます。

web.configファイル

<?xml version="1.0"?> 
<configuration> 
    <location path="form1.aspx"> 
    <system.web> 
     <authorization configSource="allow.config" /> 
    </system.web> 
    </location> 
    <location path="form2.aspx"> 
    <system.web> 
     <authorization configSource="allow.config" /> 
    </system.web> 
    </location> 
    <location path="form3.aspx"> 
    <system.web> 
     <authorization configSource="allow.config" /> 
    </system.web> 
    </location> 
    <location path="form4.aspx"> 
    <system.web> 
     <authorization configSource="deny.config" /> 
    </system.web> 
    </location> 
    <location path="form5.aspx"> 
    <system.web> 
     <authorization configSource="deny.config" /> 
    </system.web> 
    </location> 
    <location path="form6.aspx"> 
    <system.web> 
     <authorization configSource="deny.config" /> 
    </system.web> 
    </location> 
</configuration> 

allow.config

<?xml version="1.0"?> 
<authorization> 
    <allow users="*"/> 
</authorization> 

deny.config

<?xml version="1.0"?> 
<authorization> 
    <deny users="*"/> 
</authorization> 

各セクション増大許可/拒否ルールの数として、このアプローチが増加するの有用性。

+0

さらに単純化し、configSourceを設定した場所の行だけを設定できますか?だから、基本的には場所の一覧に過ぎませんか? – Ray

+0

@Ray:私が試みたとき、私は '認識できない属性 'configSource'を得ました。 –

関連する問題