title: Why are there two incompatible session state types in ASP.NET?
body: <p>I see two means of working with session data in ASP.NET MVC:</p>
  
  <ul>
  <li><code>System.Web.SessionState.HttpSessionState</code>, available on <code>HttpApplication</code></li>
  <li><code>System.Web.HttpSessionStateBase</code>, available on <code>Controller</code></li>
  </ul>
  
  <p>Data stored in one seems to be available in the other.</p>
  
  <p>Unfortunately the only common ancestor of these two types is <code>System.Object</code>, meaning that I can't create reusable utility code for the abstraction of either.</p>
  
  <p>Why is the API this way?  Is there an important difference between the two that I am missing?</p>