Why does Application_BeginRequest() fire twice when refreshing browser


I'm observing some really confusing behavior with the Application_BeginRequest event in my Global.asax file (in an ASP.NET MVC app). When running through the debugger, if I Refresh my browser (IE7), this event fires twice. If I click a link or otherwise manually request a page, it fires once – as expected.

Why does a refresh cause BeginRequest to fire twice?

I'm observing this with a brand new MVC project with the following addeded to Global.asax.cs

protected void Application_BeginRequest() { 
    //executed twice

For context, I'm trying to add a new object to the HttpContext.Current.Items collection during this event, so it will persist through the entire request process. Obviously, I don't want this to happen twice for a single refreshed request!

Best Solution

Are you sure it's really 2 request to the same URL? I would think that the second is probably some dynamic JS, CSS or image file. Try to find out either with Fiddler or by looking at HttpContext.Current.Request.Uri in the debugger

Related Question