2011-04-05 53 views
19

Tengo un sitio web y me gustaría Denegar el explorador de directorios de un archivo web.config.Cómo deshabilitar el directorio Examinar en Web.Config

Aquí el código que estoy usando coloca en la RAÍZ. No funciona. Lo estoy probando localmente, así que con la URL COMO http://localhost:3214/, aún puedo explorar el directorio de CMS.

  • ¿Qué estoy haciendo mal?
  • ¿Debería funcionar incluso en la máquina local?

¡Gracias por su apoyo!

<configuration> 
    <location path="Cms"> 
    <system.webServer> 
     <directoryBrowse enabled="false" /> 
    </system.webServer> 
    </location> 
</configuration> 

Algunos recursos:

http://blogs.iis.net/bills/archive/2008/03/24/how-to-enable-directory-browsing-with-iis7-web-config.aspx

http://www.expta.com/2008/03/configuring-virtual-directories-with.html

Respuesta

7

Primero: no todo funciona en un bloque <location>.

No puedo encontrar una declaración positiva de que <system.webServer> no se admite en un <location>, pero no puedo encontrar ningún caso donde se sugiera que está permitido. La evidencia para esto está en el (global) machine.config donde se define la sección system.webserver para usar el controlador IgnoreSection: es decir. no es procesado por la implementación estándar System.Configuration, y es esa implementación estándar de manejo de configuraciones que brinda soporte para <location>.

Intente agregar un web.config en la carpeta Cms con el elemento directoryBrowse para confirmar que la exploración está bloqueada.

0

la <directoryBrowse> directiva controla el listado del directorio a través del protocolo HTTP única: http://msdn.microsoft.com/en-us/library/ms691327%28v=vs.90%29.aspx

No lo hará tener un efecto en el código, tratando de acceder al directorio desde cualquier otra aplicación (o incluso la suya).

@Edit: después de la edición y si consigo que la derecha - que pienso, lo que quiere decir con Denegar Directory Browser es la funcionalidad prevista: mostrar el contenido del directorio dentro de una ruta especificada utilizando el navegador. Y sí, probablemente no funcionará en el servidor de desarrollo local. Pruébalo en IIs!

+0

En este momento estoy usando el servidor incorporado dentro de Visual Studio. ¿Crees que funcionaría en IIS? – GibboK

4

Gibbok, nada está mal aquí, no se preocupe :)

Suponiendo que usted está navegando por su sitio web desde el servidor incorporado dentro de Visual Studio, esta es típicamente un caso normal.

Estoy bastante seguro de que si se mudó a IIS con el código anterior, la navegación por el Directorio se comportará exactamente como usted quiere.

Pruébalo y aloja este sitio web en IIS, y cuéntanos qué sucedió, gracias.

0

Estaba intentando el mismo código. Lo que tienes es de hecho correcto.Aquí está el reference.

Por supuesto que no estaba trabajando para mí y no podía entender por qué, hasta que leí el post de Richard y recordé que alguien puso un archivo web.config en ese directorio. Ese archivo anula el comportamiento en el archivo web.config principal. En el web.config subdirectorio la opción directoryBrowse se convirtió explícitamente en (así como un montón de otras personas que manipulan, uff!). Eliminar ese archivo y lo que tienes arriba funciona para mí. En realidad, pasa la solicitud al siguiente controlador, que es exactamente lo que yo quería.

estoy usando IIS 7 en mi máquina local.

Cuestiones relacionadas