title: what is the difference between ControllerContext.HttpContext.Session and HttpContext.Current.Session
body: <p>i'm using an example in which i can fake the session.
  It's for use in a unittest of a mvc controller.</p>
  
  <p>In the test i create a controller and then i do this:</p>
  
  <pre><code>FakeHttpContext  httpctx  = new FakeHttpContext(null,null,null,null,mSessionItems );
  ControllerContext ctx2 = new ControllerContext(httpctx,new RouteData(), target);
  </code></pre>
  
  <p>where <code>mSessionItems</code> is my session and <code>target</code> is my instance of a controller</p>
  
  <p>and indeed, when i'm in a controller reading <code>this.ControllerContext.HttpContext.Session</code>, i have a session, great!</p>
  
  <p>but.... i also read the session outside the controller, and there i use <code>HttpContext.Current.Session</code>, and that is null (or actualy, the <code>HttpContext.Current</code> is null).</p>
  
  <p>So i wondered, what is the difference between the two?</p>