Андрій має рацію - це нуль, тому що під час роботи в рамках ASP.NET MVC HttpContext (і, отже, HttpContext.Session) не встановлюється, коли клас контролера створюється, як ви могли б очікувати, але він встановлюється ("вводиться") пізніше класом ControllerBuilder. Якщо ви хочете краще зрозуміти життєвий цикл, ви можете або витягнути платформу ASP.NET MVC (джерело доступне), або звернутися до: цієї сторінки
Якщо вам потрібен доступ до сеансу, то одним із способів буде перевизначення методу "OnActionExecuting" і доступ до нього там, оскільки він буде доступний до того часу.
Однак, як припускає Андрій, якщо ваш код залежить від сеансу, тоді потенційно може бути важко написати модульні тести, тому, можливо, ви можете розглянути можливість обгортання сеансу в допоміжний клас, який потім можна замінити на інший, не- веб-версія, коли вона працює під модульними тестами, тому від'єднайте ваш контролер від Інтернету.