我正在使用vs#使用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如下:
但不幸的是我仍然遇到了上面提到的同样的问题。
更新
你有解决方法吗?
答案 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)
解决了上述问题,它解决了我的问题!
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)]
来自网络服务