只有在配置中将enableSessionState设置为true时,才能使用会话状态

Sam*_*ath 28 .net session visual-studio-2010 asp.net-mvc-2

我正在使用vs#使用c#在Asp.net MVC 2应用程序上工作.当我在调试模式下在本地运行我的应用程序时,我遇到了下面提到的错误.

错误信息图片如下:

在此输入图像描述

错误消息文本如下:

只有在配置文件或Page指令中将enableSessionState设置为true时,才能使用会话状态.还请确保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
Run Code Online (Sandbox Code Playgroud)

尝试2如下:

在此输入图像描述

但不幸的是,我仍然遇到了上面提到过的同样的问题.

UPDATE

在此输入图像描述

你对此有什么解决方案吗?

jes*_*ing 35

您是否也在该部分中启用了会话状态?

 <system.web>
      <pages enableSessionState="true" /> 
 </system.web>
Run Code Online (Sandbox Code Playgroud)

或者您是否将此添加到页面?

 <%@Page enableSessionState="true"> 
Run Code Online (Sandbox Code Playgroud)

你确认该ASP.NET Session State Manager Service服务正在运行吗?在你的截图中它不是.它设置为启动模式Manual,要求您在每次使用它时启动它.要启动它,请突出显示该服务,然后单击工具栏上的绿色播放按钮.要自动启动它,请编辑属性并调整启动类型.

或者将SessionState的mode属性设置为InProc,以便不需要状态服务.

 <system.web>
      <sessionState mode="InProc" />
 </system.web>
Run Code Online (Sandbox Code Playgroud)

检查MSDN以获取有关在ASP.NET会话状态中存储数据的所有可用选项.


注意:最好让Controller从会话中获取值并让它为您的页面/控件(或ViewBag)的Model添加值,这样View就不依赖于HttpSession而你可以选择稍后使用最少的代码更改,此项目的不同来源.或者甚至更好,根本不使用会话状态.当您使用大量异步JavaScript调用时,它可能会破坏您的性能.


Nac*_*ica 14

此外,如果您正在运行SharePoint并遇到此错误,请不要忘记运行

Enable-SPSessionStateService -DefaultProvision
Run Code Online (Sandbox Code Playgroud)

或者您将继续收到上述错误消息.


Sam*_*ath 6

实际上jessehouwing为正常情况提供了解决方案.

但在我的情况下,我已经启用了2种类型的会话 web.config file

就像下面一样.

第一 :

<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>
Run Code Online (Sandbox Code Playgroud)

第二个 :

<sessionState mode="Custom" customProvider="DefaultSessionProvider">
            <providers>
                <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="PawLoyalty" applicationName="PawLoyalty"/>
            </providers>
 </sessionState>
Run Code Online (Sandbox Code Playgroud)

所以在我的情况下,我必须评论第二个.B'cos那个生产的东西.当我评论第二个时,我的问题消失了.

  • 谢谢!!!将模块注册到“&lt;modules&gt;”部分对我有用,而我遇到的错误是告诉我将其注册到“httpModules”下 (2认同)

小智 6

我想让每个人都知道,有时这个错误只是一些奇怪的内存错误的结果.重新启动你的电脑,然后回到视觉工作室,它就会消失!离奇!在你开始使用你的web配置文件之前尝试一下,就像我做的那样!;-)


Sam*_*ara 5

就我而言,问题只是通过使用HttpContext.Current.Session而不是Session