The Controller class maintains a reference to the HttpContext property, and object of HttpContextBase.  HttpContextBase is a great class because now we have an abstract way to replace default logic if needed (but generally that wouldn’t be recommended).  Ideally, it’s great for fake environments.  But I digress, HttpContextBase is the main object for accessing context-specific information.  But where does this actually get created?  I went digging around the API in Reflector, and found where the MVC handlers that create the request.  The MVCHttpHandler uses theMvcHandler object, along with the HttpContext.Current reference as a way to instantiate the context.  So while in ASP.NET you would directly reference HttpContext.Current to access the context, here in MVC references to HttpContextBase comes from HttpContext.Current.

If , for whatever reason, you wanted to instantiate the HttpContext object directly, you would do this via: new HttpContextWrapper(HttpContext.Current).