Pregunta

Tengo un sitio web .NET que contiene una IHttpModule me escribió para realizar ciertas tareas (autorización etc). Pero dentro de la página web hay una serie de directorios virtuales que se asigna a las aplicaciones de terceros que, desgraciadamente, que no puedo cambiar o mover (por ejemplo foros de la comunidad de servidores, adxstudio cms y otros).

Estoy buscando una manera de evitar que mi IHttpModule del funcionamiento cuando la solicitud se hace de los contenidos de los directorios virtuales. ¿Es esto posible?

[Editar - añadió la siguiente]

He estado experimentando con la adición de <remove name="X"/> dentro del nodo <httpModules> en los archivos Web.config de las aplicaciones del directorio virtual, pero no parece estar funcionando. Probablemente no es una gran solución, ya sea porque las aplicaciones de terceros pueden ser actualizados por lo que no quiero requerir cambios en su código / configuración.

También intentado añadir un <location path="." inheritInChildApplications="false"> alrededor de mi nodo <system.web> en el Web.config de los padres, pero que también no parece funcionar.

[Editar de nuevo - añadió más]

La razón es que no funciona es porque el evento Init del IHttpModule solamente se dispara una vez por ciclo de vida de aplicaciones (en lugar de por la petición, ya que había asumido). Desde agrego un montón de detectores de eventos en el evento init éstos todavía se disparan en las solicitudes posteriores ...

¿Fue útil?

Solución

Si usted tiene una lista de estos directorios y sus caminos virtuales, se puede construir una búsqueda de ellos.

Por cada HttpRequest que desencadena su módulo, se puede comprobar la ruta de acceso virtual para ver si pertenece a cualquiera de la ruta en la búsqueda. Si es así, entonces puede no hacer nada o salir de su módulo de código.

PD: Por problema de rendimiento, es probable que desee almacenar la búsqueda en el estado de la aplicación (por ejemplo HashMap etc)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top