Why is Page_Load not firing after coming back from another page using ASP.NET - ergo epic embarrassment :)

G Berdal picture G Berdal · Feb 17, 2010 · Viewed 30k times · Source

Let's say I have two pages on the same ASP.NET C# WebSite.

  • Page1.aspx does things in the Page_Load event
  • I navigate to Page2.aspx using the menu
  • Page2.aspx does some things then Response.Redirect back to Page1.aspx
  • Page1.aspx cannot do things in Page_Load event this time because it never fires.

I tried to turn off cache declaratively, tried using true for endResponse in my redirect... nothing seems to make a difference.

Never mind everybody! I am a moron! Using Visual Studio Dev Localhost the Redirect was redirecting to the live page! :)

Answer

Guffa picture Guffa · Feb 17, 2010

The reason for the page executing doesn't affect the page cycle, the Load event always fires when the page is executed.

So, if the Page_Load doesn't run sometimes, it's because the page is cached and doesn't execute on the server. The page can be cached in the browser, in a router somewhere along the way, or on the server using server side page caching.

If you haven't enabled server side page caching for the page, it's cached in the browser or in the network. You can use cache settings to try to elliminate this:

Response.Cache.SetCacheability(HttpCacheability.NoCache);

This will keep the page from being cached in normal circumstances. (Check also that your browser isn't in offline mode, then it will use anything in the cache regardless of it's cacheability settings.)