.NET 会话不工作

2024-03-03

这是一个奇怪的问题,但希望有人能给我一个想法。我将一些值放入会话中Session_Start of the 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我不明白为什么它会直接在页面上工作,而且我不想再弄脏应用程序或浪费更多时间徒劳地尝试启用会话。

有人还有其他想法吗?

谢谢, 杰夫


断点!

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

Ugh!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET 会话不工作 的相关文章

随机推荐