34

我正在使用 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如下:

在此处输入图像描述

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

更新

在此处输入图像描述

你有什么解决办法吗?

4

13 回答 13

40

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

 <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 调用时,它可能会影响您的性能。

于 2013-01-15T09:47:04.880 回答
14

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

Enable-SPSessionStateService -DefaultProvision

否则您将继续收到上述错误消息。

于 2013-01-23T23:52:22.457 回答
7

实际上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 那件事是为了生产。当我评论第二个时,我的问题就消失了。

于 2013-01-15T14:23:49.290 回答
7

我想让大家知道,有时这个错误只是一些奇怪的内存错误的结果。重新启动你的电脑并回到视觉工作室,它就会消失!!奇怪!在你开始像我一样玩弄你的网络配置文件等之前尝试一下!!!!;-)

于 2013-11-04T18:34:28.313 回答
5

在我的情况下,问题只是通过使用HttpContext.Current.Session而不是Session

于 2014-05-02T21:40:29.470 回答
3

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

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

并使用以下命令运行 SharePoint 命令行管理程序

   Enable-SPSessionStateService -DefaultProvision
于 2015-08-28T06:31:21.760 回答
2

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

于 2013-06-27T09:28:01.643 回答
1

以下给定路径的答案工作正常。

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

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

希望这对其他人有帮助!

于 2014-02-13T07:42:05.327 回答
1

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

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

于 2014-11-26T12:15:22.963 回答
0
  1. 可能是您的 Skype 在 80 端口拦截您的请求,在 Skype 选项中取消选中
  2. 或者当没有代理时,您的 IE 已检查代理的连接
  3. 或者你的提琴手可以拦截并充当代理,取消选中它!

解决了上面的问题,解决了我的问题!

海德科技

于 2013-08-26T16:35:19.323 回答
0

仅在调试 ASP .Net 应用程序时出现此错误。

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

问题解决了一次,我从手表中删除了会话变量。

于 2015-10-09T02:26:30.480 回答
0

如果您在 Web.Config 中有以下内容,则会话状态可能会被破坏:

<httpModules>
  <clear/>
</httpModules>

如果是这种情况,您可能需要注释掉该部分,并且您不需要任何其他更改来解决此问题。

于 2015-11-12T10:44:05.410 回答
0

有时可能需要一个

[WebMethod(EnableSession = true)]

来自网络服务

于 2021-04-13T14:32:26.663 回答