Dot-Net

只有在配置中將 enableSessionState 設置為 true 時,才能使用會話狀態

  • January 15, 2013

我正在使用 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 呼叫時,它可能會影響您的性能。

引用自:https://stackoverflow.com/questions/14334147