这是一个奇怪的,但希望有人可以在这里给我一个想法。Session_Start
我在我的应用程序中将一些值放入会话中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"
and<add name="Session" type="System.Web.SessionState.SessionStateModule"/>
因为它们以前从来没有出现过,而且它总是可以工作的。但是我已经尝试过同时启用它们,启用一个或另一个,它只是没有任何区别。
这是一个已经投入生产多年的应用程序,我只是做了一些小改动,其中最大的可能是添加了一个“标题栏”页面,并从 2.0 升级到 3.5。我还没有尝试添加enableSessionState
到页面指令,因为它不起作用web.config
我不明白为什么它会直接在页面上工作,我不想再弄脏应用程序或浪费更多时间尝试无法启用会话。
有人有其他想法吗?
谢谢,杰夫