2012-11-07 43 views
6

我不使用MVC,URL重写,自定义HTTP模块等。在基本调用会话属性时关闭了继承System.Web.UI的网页.Page或通过System.Web.HttpContext.Current.Session,我收到以下错误:仅当enableSessionState设置为true时才能使用会话状态

会话状态只能在enableSessionState设置为true时使用,无论是在配置文件中还是在Page指令中。请确保System.Web.SessionStateModule或自定义会话状态模块包含在应用程序配置的<configuration>\<system.web>\<httpModules>部分中。

经过一番研究,我已经实现了如下的Web.config,但错误仍然存​​在。我正在使用内置的Web服务器从Visual Studio 2010中调试Web应用程序。

<configuration> 
    <system.web> 
     <compilation debug="true" targetFramework="4.0" /> 
     <sessionState mode="InProc" timeout="60" cookieless="false" /> 
     <pages enableSessionState="true" /> 
     <httpModules> 
      <remove name="Session" /> 
      <add name="Session" type="System.Web.SessionState.SessionStateModule" /> 
     </httpModules> 
    </system.web> 
</configuration> 
+0

使用你的web.config例子,我创建在Visual Studio 2010中新的.NET 4.0的Web应用程序,并能更新一个会话变量。我想知道是否有其他事情正在导致您的应用程序出现问题。你可以发布一个精简版的应用程序,但仍然有问题吗? – csm8118

+0

@ csm8118我太早能够在请求中更新会话变量。但是,当我在稍后遇到此问题的请求中尝试访问该Session变量时。 – user786423

+0

请求中的哪个点出现错误?你可以发布抛出错误的代码吗? – csm8118

回答

0

这个问题在我已知的情况下转载....

如果框架或两个平行的请求从浏览器的出现,如果这两个页面具有相同custombase页面,访问会话导致这异常由于多个工作线程...

更新: 对于这个问题的所有患者,我有我的发现在这里! 1.我可以在IE浏览器(IE10)和FIREFOX(22)中重现这个问题,尽管我在本地代码中设置了所有启用的..etc.etc ...,在连接选项卡 - >局域网设置有“使用代理服务器的本地主机...”显示复选框作为托运 - 没有一个有效的代理服务器设置...

当我取消这个在IE中,与默认会话设置相同的代码,运行像马!

希望,让一些光,

感谢

3

你的问题很简单。如果您将代码从Session_Start全局事件之后执行的位置移开,那么您会很容易地看到此问题。作为一个例子,在Page_Init事件中编写代码或覆盖OnInit,并在那里做你想做的任何事情。

希望这会为你工作。

1

我花了很多时间调试这个问题。 我们的网站工作正常,直到昨天,突然停止与错误工作。

会话状态只能在enableSessionState设置为true(无论是在配置文件中还是在Page指令中)时使用。请确保System.Web.SessionStateModule或自定义会话状态模块包含在应用程序配置的\\部分中。

当检查服务列表中缺少ASP.net状态服务。

重新安装它可以帮助解决问题。

C:\ WINDOWS \ Microsoft.Net \ Framework64 \ v4.0.30319 \ ASPNET_REGIIS -i

+0

链接是虚构 –

+0

谢谢。它帮助了我。无论如何,在Visual Studio和其他应用程序和依赖项安装后的新系统上,我会遇到会话状态异常。是的,可以通过删除会话模块并重新添加来轻松解决,但这不是出路。会话模块不一定应包含在模块中 – Regfor

相关问题