Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does Application_BeginRequest() fire twice when refreshing browser?

Tags:

asp.net

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!

like image 235
Kurt Schindler Avatar asked Jul 16 '09 18:07

Kurt Schindler


2 Answers

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

like image 198
chris166 Avatar answered Sep 28 '22 09:09

chris166


Something that surprised me a while back was that if you have an img tag in your html that doesn't have a proper image path, some browsers will make a request to the original page. Here is a related blog post.

like image 30
Chris Shaffer Avatar answered Sep 28 '22 09:09

Chris Shaffer