Reescribiendo la URL con datos POST en el evento Application_AquireRequestState

Tengo un código que registra la ruta en el evento Application_AcquireRequestState de la aplicación. Una vez que se registran las rutas, establezco una marca en la memoria caché de tiempo de ejecución Http para que no vuelva a ejecutar el código de registro de ruta. Hay una razón específica para registrar la ruta en este evento Application_AcquireRequestState .

Una vez que se reinicia el grupo de aplicaciones y si entra una solicitud válida (que coincide con la ruta), el código de registro de ruta entra en acción pero IIS / ASP.Net no atiende esa solicitud y devuelve 404. Todas las solicitudes válidas subsiguientes están funcionando bien .

Quiero asegurarme de que incluso la primera solicitud también se sirve correctamente.

¿Es posible volver a escribir la solicitud para que después de que se realice el registro de la ruta podamos tratar de reproducir la solicitud si la URL coincide con una de las rutas registradas? ¿Hay alguna solución para resolver este problema?

Según abajo

orden de eventos

y por debajo

eventos

Y el siguiente hilo SO

¿Cuándo tiene lugar el enrutamiento en la tubería?

Es posible que deba orientar algo entre el evento AuthenticateRequest o PostAuthorizeRequest para realizar el registro de su URL a medida que el enrutamiento ocurre después de eso

El enrutamiento Url ocurre justo después del evento PostAuthorizeRequest y, como las rutas ya estarán registradas, la primera solicitud también se atenderá correctamente.

Este es un tipo de pseudocode que puede usar en Global.asax .

 private bool RootIsRegistered = false; //register Application level var void Application_BeginRequest(object sender,EventArgs e){ if(!RootIsRegistered) RegisterRoots(); } 

De esta manera, puede estar seguro de que sus raíces están registradas incluso en la primera solicitud.