.NET Session无法正常工作

时间:2009-06-25 18:39:45

标签: asp.net session-state

这是一个奇怪的,但希望有人可以在这里给我一个想法。我在我的应用中Session_Start的{​​{1}}中为会话添加了几个值。在Global.asax我的基页Session_Start被调用并尝试使用其中一个OnInit变量之后。

奇怪的部分有时会起作用,然后在没有任何变化后会开始给我这个错误:

  

“会话状态只能在以下情况下使用   Session设置为enableSessionState,   在配置文件中或在   true指令。请也做   确定   Page或者   自定义会话状态模块是   包括在内   System.Web.SessionStateModule   申请中的部分   配置。“

我看了一眼,并在<configuration>\<system.web>\<httpModules>中找到了启用会话的所有不同方法。现在看来是这样的:

web.config

你可以看到我注释了一些东西,特别是<system.web> ... <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20"/> <globalization requestEncoding="utf-8" responseEncoding="utf-8"/> <httpHandlers> <add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax"/> <remove verb="*" path="*.asmx"/> <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </httpHandlers> <xhtmlConformance mode="Legacy"/> <pages> <!-- enableSessionState="true" autoEventWireup="true" enableViewState="true" enableViewStateMac="true" --> <controls> <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </controls> </pages> <httpModules> <!--<add name="Session" type="System.Web.SessionState.SessionStateModule"/>--> <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </httpModules> </system.web> enableSessionState="true",因为它们以前从未出现过,它总是用来工作。但是我已经尝试过它们都已启用,启用了一个或另一个,它只是没有区别。

这是一款已经投入生产多年的应用程序,我只做了一些细微的改动,其中最大的一个就是为它添加一个“标题栏”页面,并从2.0升级到3.5。我没有尝试将<add name="Session" type="System.Web.SessionState.SessionStateModule"/>添加到页面指令中,因为它在enableSessionState中不起作用我不明白为什么它会直接在页面上工作,我讨厌脏应用程序不再或浪费时间再试图启用会话。

任何人都有其他想法吗?

谢谢, 杰夫

2 个答案:

答案 0 :(得分:6)

BREAKPOINTS!

我在基页的构造函数方法,主页面以及Session_Start和OnInit中设置了断点。同事删除了调试器中的所有断点,问题消失了!

唉!

答案 1 :(得分:0)

我在变量实例化和页面加载设置一些会话值时遇到断点同样的事情。运行Windows 7 / VS2010。当我禁用断点时,它就可以加载会话状态。