【问题标题】:.NET Session not working.NET 会话不工作
【发布时间】:2010-11-24 01:06:25
【问题描述】:

这是一个奇怪的问题,但希望有人可以在这里给我一个想法。我在我的应用程序的Global.asaxSession_Start 中将一些值放入会话中。在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"&lt;add name="Session" type="System.Web.SessionState.SessionStateModule"/&gt;,因为它们以前从来没有出现过,而且它总是可以工作的。但是我已经尝试过同时启用它们,启用一个或另一个,它只是没有任何区别。

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

还有人有其他想法吗?

谢谢, 杰夫

【问题讨论】:

  • 您是在 IIS 6 还是 IIS 7 中运行它?
  • 本地 IIS6,测试和生产 IIS7。
  • 这在 IIS6 和 IIS7 中都失败了吗?
  • 本地 (IIS6) 它立即失败。在测试中它很好,直到我改变我的登录身份,这可能是一个单独的问题,也可能不是一个单独的问题,但由于我无法测试那个,直到我修复了这个,所以我在本地运行它,所以我可以解决这个问题一出:(
  • 您的 sessionState 节点中可能不需要 stateConnectionString 或 sqlConnectionString。不过,我确定这不会导致您的问题...

标签: asp.net session-state


【解决方案1】:

断点!

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

啊!

【讨论】:

  • 哈哈……只见树木不见森林 :) 很高兴你把它整理好了。
  • 难以置信,刚刚遇到了同样的问题。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2011-08-16
    • 2012-02-13
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多