asp.net - net - Global.asax Application_BeginRequest no se activa a menos que exista archivo físico-404
web config asp net (2)
Uso la reescritura de URL ( HttpContext.Current.RewritePath(...)
) dentro de Global.asax, por lo que los archivos físicos en su mayoría no existen. Todo funcionaba bien hasta que tuve que eliminar el sitio de IIS (8.5) y volver a agregarlo.
Y ahora recibo 404 no encontrado para cada solicitud. Ejemplo http://localhost/site/article123
Y el evento Global.asax Application_BeginRequest
ni siquiera se activa.
Sin embargo, si agrego el archivo vacío default.aspx en la carpeta /site/article123
todo comienza a funcionar bien con la URL reescrita correctamente.
Los archivos no han cambiado, por lo que debería ser el problema con la configuración de IIS.
Tengo seguidores dentro de web.config:
<modules runAllManagedModulesForAllRequests="true">
Proyecto en IIS se establece como una aplicación con Application Pool .NET v2.0 Classic
Editar:
La misma historia en IIS 8.0
Necesita tener el Módulo ReWrite instalado bajo IIS 8.5
Use Web Installer Platform para instalarlo.
El problema estaba en el modo Managed Pipeline Mode
establecido como classic
. Cambiar de classic
a integrated
cambiando el grupo de aplicaciones de .NET v2.0 Classic
a .NET v2.0
resolvió el problema.
Según entendí esto: en classic
modo classic
, IIS está gestionando las solicitudes, mientras que en el modo intergated
, las solicitudes IIS entrantes se asignan al motor ASP.NET.
Más sobre los modos de canalización: ¿Cuál es la diferencia entre el modo de canalización "clásico" e "integrado" en IIS7?