只有在配置中將 enableSessionState 設置為 true 時,才能使用會話狀態
我正在使用 vs 2010 使用 c# 開發 Asp.net MVC 2 應用程序。當我在調試模式下本地執行我的應用程序時,我遇到了下面提到的錯誤。
錯誤資訊圖像如下:
錯誤消息文本如下:
會話狀態只能在 enableSessionState 設置為 true 時使用,無論是在配置文件中還是在 Page 指令中。還請確保 System.Web.SessionStateModule 或自定義會話狀態模組包含在
<configuration>\<system.web>\<httpModules>應用程序配置的部分中。我為解決這個問題所做的工作如下:
嘗試 1:web.config 文件已更改如下:
<system.webServer> <modules runAllManagedModulesForAllRequests="true"> <remove name="Session" /> <add name="Session" type="System.Web.SessionState.SessionStateModule, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </modules> </system.webServer嘗試2如下:
但不幸的是,我仍然遇到上面提到的相同問題。
更新
你有什麼解決辦法嗎?
您是否也在該部分中啟用了會話狀態?
<system.web> <pages enableSessionState="true" /> </system.web>還是您將其添加到頁面中?
<%@Page enableSessionState="true">您是否確認該
ASP.NET Session State Manager Service服務正在執行?在您的螢幕截圖中不是。它設置為啟動模式Manual,每次使用時都需要啟動它。要啟動它,請突出顯示該服務並點擊工具欄上的綠色播放按鈕。要自動啟動它,請編輯屬性並調整啟動類型。或者將 SessionState 的 mode 屬性設置為
InProc,這樣就不需要狀態服務了。<system.web> <sessionState mode="InProc" /> </system.web>查看MSDN 以了解有關在 ASP.NET 會話狀態中儲存數據的所有可用選項。
注意:最好讓您的控制器從會話中獲取值並將值添加到您的頁面/控制項(或 ViewBag)的模型中,這樣視圖不依賴於 HttpSession,您可以選擇稍後此項目的不同來源,程式碼更改最少。或者更好的是,根本不使用會話狀態。當您使用大量非同步 javascript 呼叫時,它可能會影響您的性能。


