Andrei benar - nilainya null karena saat berjalan di bawah kerangka kerja ASP.NET MVC, HttpContext (dan karenanya HttpContext.Session) tidak disetel saat kelas pengontrol dibuat seperti yang Anda harapkan, tetapi disetel ("diinjeksi") nanti oleh kelas ControllerBuilder. Jika Anda ingin pemahaman yang lebih baik tentang siklus hidup Anda dapat menarik kerangka kerja ASP.NET MVC (sumber tersedia), atau merujuk ke: halaman ini
Jika Anda perlu mengakses Sesi, salah satu cara adalah dengan menimpa metode "OnActionExecuting" dan mengaksesnya di sana, karena akan tersedia pada saat itu.
Namun, seperti yang disarankan Andrei, jika kode Anda bergantung pada Sesi maka akan berpotensi sulit untuk menulis pengujian unit, jadi mungkin Anda dapat mempertimbangkan untuk menggabungkan Sesi dalam kelas pembantu yang kemudian dapat ditukar dengan yang berbeda, non- versi web saat menjalankan pengujian unit, oleh karena itu lepaskan pengontrol Anda dari web.