Ваш контроллер создается до того, как ASP.NET установит HttpContext. Как говорит Ник, вам нужно поместить этот код в переопределенный метод в вашем классе.
Я также хотел бы отметить, что зависимость от HttpContext напрямую сделает невозможным выполнение модульного тестирования на любом из ваших контроллеров, расширяющих этот класс. Вот почему многие методы (например, метод Execute) в классе ControllerBase
принимают RequestContext
в качестве аргумента. Вы можете сказать:
protected override void Execute(System.Web.Routing.RequestContext requestContext)
{
var currentUser = requestContext.HttpContext.User;
...
}
... что позволяет создавать и запускать ваши контроллеры в "поддельных" контекстах для целей модульного тестирования.