2011-01-05 7 views
22

Nel mio file di configurazione Web di ASP.NET ho i seguenti elementi posizione definita:Specificare più di una directory in Località elemento Percorso di Web.Config

<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> 

L'esempio precedente è specificare che tutte le directory saranno bloccate ad utenti anonimi tranne le due directory dir1 e dir2.

Sono curioso di sapere se esiste una sintassi che posso utilizzare che mi consentirà di definire più di una directory all'interno di un elemento di posizione. Ad esempio, sarebbe conveniente se si potesse fare qualcosa di simile ...

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

Sembra che sia stato documentato come consentire un elenco di percorsi separati da virgole, ma hanno risolto la documentazione anziché implementare la funzionalità documentata. 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/dettagli/104010/percorso-attributo-attributo-in-web-config-non-accetta-percorsi multipli non trovato – Kiquenet

risposta

14

dispiace, ma la proprietà percorso non permette di usare "" quindi è necessario scrivere tag per tutti il ​​percorso, Or puoi creare web.config in ogni directory.

34

Non è possibile specificare più elementi nell'attributo percorso, ma è possibile utilizzare l'attributo configSource.

Ad esempio, il seguente file web.config originale:

<?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> 

possono essere sostituiti con i seguenti web.config, allow.config e file deny.config equivalenti:

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> 

L'utilità di questo approccio aumenta all'aumentare del numero di consentire/negare regole in ogni sezione aumenta.

+0

Sarei in grado di semplificare ulteriormente e solo le linee per la posizione con il set configSource lì? Quindi sarebbe fondamentalmente solo un elenco di posizioni? – Ray

+0

@Ray: quando l'ho provato, ho ricevuto l'attributo "ConfigSource" non riconosciuto. –

Problemi correlati