環境:Win 2008, VS 2008 SP1, MVC 1.0。TempData 預設使用 SessionTempDataProvider。在 web.config 設 <sessionState mode="Off" /> 後,每次 Action 執行載入/儲存 TempData 即拋出異常。

不想用 TempData,也不想為禁用 Session 而重寫完整 Provider,乾脆寫一個「什麼都不做」的 Provider:
public class NullTempDataProvider : ITempDataProvider
{
public IDictionary<string, object> LoadTempData(ControllerContext controllerContext)
{
return new Dictionary<string, object>(); // 回傳空字典
}
public void SaveTempData(ControllerContext controllerContext, IDictionary<string, object> values)
{
// 故意留空:不儲存任何資料
}
}

需在 Controller 中覆寫 CreateTempDataProvider() 回傳 NullTempDataProvider 實例,即可在禁用 Session 環境下正常運行 MVC 應用。