I am working on an MVC ASP .NET application. I am relatively new to both.
In a controller I am trying to get the current log on user, for which there seem to be two
Yes, they will usually be identical. However, if you're working with additional threads, they will not be; System.Web.HttpContext.Current
is threadstatic.
The context provided by the controller (not the static HttpContext.Current) is mockable. If you're interested in unit-testing your code, it's generally far easier to create a mock ControllerContext and set it on the Controller than it is to go through HttpContext.Current. Otherwise ControllerContext.HttpContext points to the same data as HttpContext.Current.