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

时间:2013-01-15 08:59:14

标签: .net visual-studio-2010 session asp.net-mvc-2

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

错误信息图片如下:

enter image description here

错误消息文本如下:

  

会话状态只能在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如下:

enter image description here

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

更新

enter image description here

你有解决方法吗?

13 个答案:

答案 0 :(得分:33)

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

 <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 for all the options available to you with regards to storing data in the ASP.NET session state


注意:最好让Controller从会话中获取值并让它为您的页面/控件(或ViewBag)的Model添加值,这样View就不依赖于HttpSession和您可以稍后为此项目选择不同的来源,只需进行最少的代码更改。甚至更好,not use the session state at all。当你使用大量的异步javascript调用时,它可以扼杀你的性能。

答案 1 :(得分:14)

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

Enable-SPSessionStateService -DefaultProvision

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

答案 2 :(得分:6)

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

但在我的情况下,我在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>

第二个:

<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>

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

答案 3 :(得分:6)

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

答案 4 :(得分:5)

在我的情况下,只需使用HttpContext.Current.Session代替Session

即可解决问题

答案 5 :(得分:2)

我意识到有一个公认的答案,但这可能对人们有所帮助。在使用IIS Express 8在Visual Studio 2012中运行时,我发现使用.NET 3.5框架的ASP.NET站点遇到了类似的问题。我尝试了所有上述解决方案,但都没有工作 - 最后运行解决方案内置的VS 2012网络服务器工作。不知道为什么,但我怀疑它是3.5框架和IIS 8之间的链接。

答案 6 :(得分:2)

适用于SharePoint 可以在C:\ inetpub \ wwwroot \ wss \ VirtualDirectories \ Sitecollection端口号中找到Web配置文件 - 并进行更改

 <system.web>
  <pages enableSessionState="true" /> 
 </system.web>

并在命令下使用SharePoint Management Shell运行

   Enable-SPSessionStateService -DefaultProvision

答案 7 :(得分:1)

Following answer from below given path worked fine.

我找到了一个完美的解决方案!将以下内容添加到web.config:

<system.webServer>
<modules>
<!-- UrlRewriter code here -->
<remove name="Session" />
<add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition="" />
</modules>
</system.webServer>

希望这有助于其他人!

答案 8 :(得分:1)

由于在后面的代码中Web页面的Public Sub New()(Visual Basic)构造函数中抛出了未处理的异常,因此引发了此错误。

如果实现构造函数,请在Try / Catch语句中包装代码,看看它是否解决了问题。

答案 9 :(得分:1)

我只在调试ASP .Net应用程序时遇到此错误。

我还在我的Visual Studio Watch中添加了Session["mysession"]种变量。

问题解决了一次,我已经从观察中删除了会话变量。

答案 10 :(得分:0)

  1. 可能是您的Skype在80端口拦截您的请求,在Skype选项中取消选中
  2. 或者,当没有代理
  3. 时,您的IE已检查代理连接
  4. 或者你的小提琴手可以拦截并充当代理人,取消选中它!
  5. 解决了上述问题,它解决了我的问题!

    HydTechie

答案 11 :(得分:0)

Session State may be broken if you have the following in Web.Config:

<httpModules>
  <clear/>
</httpModules>

If this is the case, you may want to comment out such section, and you won't need any other changes to fix this issue.

答案 12 :(得分:0)

有时可能需要一个

<块引用>

[WebMethod(EnableSession = true)]

来自网络服务