title: Session_Start getting called too often in chrome
body: <p>While playing around with the <code>global.asax.cs</code> file I attached some code inside of </p>
  
  <pre><code>protected void Session_Start(object sender, EventArgs e)
  {
  
  }
  </code></pre>
  
  <p>and then started to notice that <code>Session_Start</code> was being called at every request when using chrome. When using firefox, this was not the case and it was only called once. What could be causing this?</p>
  
  <p>To note, this is only on my dev machine. I compile and run the code, open firefox, browse to <code>http://localhost:63893/</code> and it hits <code>Session_Start</code>. While browsing in firefox it only hits <code>Session_Start</code> once.</p>
  
  <p>When I open chrome and browse to <code>http://localhost:63893/</code> it hits <code>Session_Start</code>. Then I enter my login data and hit login, and it hits <code>Session_Start</code> another time, and then it hits <code>Session_Start</code> <em>another</em> time while loading the get request for the next page. I used a counter to see, and in fact 3 unique sessions were created during that time.</p>
  
  <p>I know that there are some sources which state that a Session is abandoned when no value is stored in it. That would be a fine explanation here for me, but it is not the case. I disproved this from two methods.</p>
  
  <p>Method 1:</p>
  
  <pre><code>protected void Session_End(){} /*breakpoint*/
  </code></pre>
  
  <p>Never fired, and I can confirm that the old sessions are still present.</p>
  
  <p>Method 2:</p>
  
  <p>Used <code>Session["KeepAlive"] = true;</code> inside of <code>Session_Start</code> to see if that would prevent <code>_Start</code> from being called but it did not. <code>_End</code> was still not called.</p>
  
  <p>What is so different between the two or what have I done wrong?</p>