Andrei ถูกต้อง - เป็นโมฆะเนื่องจากเมื่อทำงานภายใต้กรอบงาน ASP.NET MVC HttpContext (และดังนั้น HttpContext.Session) จะไม่ถูกตั้งค่าเมื่อมีการจัดโครงสร้างคลาสคอนโทรลเลอร์ตามที่คุณคาดไว้ แต่จะตั้งค่า ("injection") ในภายหลัง โดยคลาส ControllerBuilder หากคุณต้องการความเข้าใจที่ดีขึ้นเกี่ยวกับวงจรชีวิตคุณสามารถดึงกรอบงาน ASP.NET MVC (แหล่งที่มาพร้อมใช้งาน) หรืออ้างถึง: หน้านี้
หากคุณต้องการเข้าถึงเซสชันวิธีหนึ่งคือการแทนที่เมธอด "OnActionExecuting" และเข้าถึงที่นั่นเนื่องจากจะพร้อมใช้งานตามเวลานั้น
อย่างไรก็ตามตามที่ Andrei แนะนำหากโค้ดของคุณขึ้นอยู่กับ Session อาจเป็นเรื่องยากที่จะเขียนการทดสอบหน่วยดังนั้นบางทีคุณอาจพิจารณารวม Session ไว้ในคลาสตัวช่วยซึ่งสามารถสลับออกเป็นส่วนอื่นที่ไม่ใช่ - เวอร์ชันเว็บเมื่อทำงานภายใต้การทดสอบหน่วยดังนั้นจึงยกเลิกการเชื่อมต่อคอนโทรลเลอร์ของคุณจากเว็บ