.NET Session无法正常工作

Jef*_*nke 1 asp.net session-state

这是一个奇怪的,但希望有人可以在这里给我一个想法.我把几个值到会话中Session_StartGlobal.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>
Run Code Online (Sandbox Code Playgroud)

你可以看到我有一些东西注释掉,特别是enableSessionState="true"<add name="Session" type="System.Web.SessionState.SessionStateModule"/>,因为他们从来没有出现之前,它总是用来工作.但是我已经尝试过它们都已启用,启用了一个或另一个,它只是没有区别.

这是一个已经投入生产多年的应用程序,我只做了一些小改动,可能最大的一个就是添加一个"标题栏"页面,并从2.0升级到3.5.我没有尝试添加enableSessionState到页面指令,因为它不起作用web.config我不明白为什么它会直接在页面上工作,我不想再弄脏应用程序或浪费任何时间尝试徒劳地启用会话.

有没有其他想法?

谢谢,杰夫

Jef*_*nke 6

断点!

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

啊!