2010-03-28 18 views
5

En ASP.net MVC 2, puedo usar routes.RouteExistingFiles = true; para enviar todas las solicitudes a través del sistema de enrutamiento, incluso si existen en el sistema de archivos.Usar RouteExistingFiles para bloquear el acceso a archivos existentes incluso si no existe una ruta

Por lo general, esto termina golpeando la ruta "{controller}/{action}/{id}" y arroja una excepción ya que no se puede encontrar el controlador.

no quiero utilizar esa ruta, aunque (que tienen sólo unos pocos URLs y que se asignan específicamente), pero todavía me gustaría para evitar el acceso al sistema de archivos.

Básicamente quiero la lista blanca páginas utilizando IgnoreRoute. ¿Hay una forma incorporada de hacer esto?

Mi enfoque actual es seguir teniendo una ruta "{*anything}" y generar un 404 cuando se golpea, pero me pregunto si algo ya está incorporado.

Respuesta

7

Este es uno de los pocos usos válidos de autorización Web.config de una aplicación ASP.NET MVC. :)

Recomendaría volver a establecer RouteExistingFiles como falso (para que el enrutamiento y la canalización MVC no manejen estas solicitudes, IIS y ASP.NET core do). Poner todos los archivos de los que desea denegar el acceso en una sola carpeta, a continuación, colocar una Web.config en esa carpeta:

<configuration> 
    <system.web> 
    <authorization> 
     <deny users="*"/> 
    </authorization> 
    </system.web> 
</configuration> 

Esto evitará IIS y ASP.NET de servir estos archivos directamente.

+0

En la solicitud de formularios web, el parámetro "checkPhysicalUrlAccess" debe ser falsa. Por ejemplo: routes.MapPageRoute ("Acerca de", "Acerca de", "~/Web/Pages/About.aspx", False) De lo contrario, funciona muy bien! (Exact Web.config como se ha creado anteriormente en el directorio "Web"). – leqid

Cuestiones relacionadas