2009-07-16 24 views
5

Estoy observando un comportamiento realmente confuso con el evento Application_BeginRequest en mi archivo Global.asax (en una aplicación ASP.NET MVC). Cuando ejecuto el depurador, si actualizo mi navegador (IE7), este evento se dispara dos veces. Si hago clic en un enlace o de otra forma solicito manualmente una página, se dispara una vez, como se esperaba.¿Por qué Application_BeginRequest() se activa dos veces al actualizar el navegador?

¿Por qué una actualización causa BeginRequest para disparar dos veces?

estoy observando esto con un nuevo proyecto MVC marca con la siguiente addeded a Global.asax.cs

protected void Application_BeginRequest() { 
    //executed twice 
} 

Para el contexto, estoy tratando de añadir un nuevo objeto a la HttpContext.Current. Colección de elementos durante este evento, por lo que persistirá durante todo el proceso de solicitud. Obviamente, ¡no quiero que esto suceda dos veces para una única solicitud actualizada!

+0

¿Está realizando algún tipo de redirección de URL? – cfeduke

+0

Wow; es 2 veces demasiado? Durante la depuración, Application_BeginRequest se activa como tiempos acumulados. – usefulBee

Respuesta

7

¿Estás seguro de que en realidad son 2 solicitudes a la misma URL? Pensaría que el segundo es probablemente algún archivo JS, CSS o de imagen dinámico. Intente averiguarlo con Fiddler o consultando HttpContext.Current.Request.Uri en el depurador

+0

¡Bingo! No me di cuenta de que esto disparará para otros archivos de contenido. Parece que el estrangulamiento con una actualización frente a otras solicitudes se debe a que IE solicita todo el contenido (url, css, js, etc.) en una actualización, mientras que hace clic en un enlace o vuelve a ingresar la url almacenaba en caché todo menos la URL real solicitud... –

0

No estoy seguro de por qué ocurre esto, pero me parece más fácil crear una clase BaseController y todos mis controladores heredan de ella. Altere el constructor para agregar su artículo al HttpContext.

+0

Buena idea. Esto se me ocurrió y parece que tendrá que ser mi solución ahora. –

0

¿Tiene una referencia en su HTML a algo que también pasa la tubería ASP.NET, como una imagen generada dinámicamente o algo así?

2

Algo que me sorprendió hace un tiempo fue que si tiene una etiqueta img en su html que no tiene una ruta de imagen adecuada, algunos navegadores realizarán una solicitud a la página original. Here is a related blog post.

Cuestiones relacionadas