2011-01-05 17 views
22

En mi archivo de configuración Web de ASP.NET he definido los siguientes elementos de localización:especificar más de un directorio en el elemento de la ruta de la ubicación 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> 

El ejemplo anterior se especifica que todos los directorios serán bloqueados a usuarios anónimos, excepto los dos directorios dir1 y dir2.

Tengo curiosidad por saber si hay una sintaxis que pueda usar que me permita definir más de un directorio dentro de un elemento de ubicación. Por ejemplo, sería conveniente si podríamos hacer algo como esto ...

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

Parece que solía estar documentado como permitir una lista de rutas separadas por comas, pero corrigió la documentación en lugar de implementar la característica documentada. 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 no encontrado – Kiquenet

Respuesta

14

lo siento, pero la propiedad ruta no permite utilizar "" por lo que debe escribir etiqueta para todo camino, O puedes crear web.config en cada directorio.

34

No puede especificar múltiples elementos en el atributo de ruta, pero puede hacer uso del atributo configSource.

Por ejemplo, el siguiente archivo web.config original:

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

pueden ser reemplazados por los siguientes Web.config, allow.config y archivos deny.config equivalentes:

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> 

La utilidad de este enfoque aumenta a medida que el número de permitir/denegar reglas en cada sección aumenta.

+0

¿Podría simplificar aún más y solo tengo líneas de ubicación con el configSource configurado allí? ¿Entonces básicamente sería solo una lista de ubicaciones? – Ray

+0

@Ray: cuando probé eso, obtuve 'atributo no reconocido 'configSource''. –

Cuestiones relacionadas