6

我没有使用 MVC、URL 重写、自定义 HTTP 模块等。在从继承 System.Web.UI.Page 的网页或通过 System.Web.HttpContext.Current.Session 对 Session 属性进行基本调用时,我得到以下错误:

会话状态只能在 enableSessionState 设置为 true 时使用,无论是在配置文件中还是在 Page 指令中。还请确保 System.Web.SessionStateModule 或自定义会话状态模块包含在<configuration>\<system.web>\<httpModules>应用程序配置的部分中。

经过一番研究,我实现了Web.config如下,但仍然出现错误。我正在使用内置的 Web 服务器从 Visual Studio 2010 中调试 Web 应用程序。

<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
        <sessionState mode="InProc" timeout="60" cookieless="false" />
        <pages enableSessionState="true" />
        <httpModules>
            <remove name="Session" />
            <add name="Session" type="System.Web.SessionState.SessionStateModule" />
        </httpModules>
    </system.web>
</configuration>
4

3 回答 3

3

你的问题是直截了当的。如果您将代码从在 Session_Start 全局事件之后执行的地方转移,那么您会很轻松地看到这个问题。例如,在 Page_Init 事件中编写您的代码或覆盖 OnInit 并在那里对您的 Session 做任何您想做的事情。

希望这对你有用。

于 2013-03-17T07:35:59.627 回答
1

我花了很多时间调试这个问题。我们的网站直到昨天都运行良好,但突然停止工作并出现错误。

会话状态只能在 enableSessionState 设置为 true 时使用,无论是在配置文件中还是在 Page 指令中。还请确保 System.Web.SessionStateModule 或自定义会话状态模块包含在应用程序配置的 \\ 部分中。

选中时,服务列表中缺少 ASP.net 状态服务。

如下重新安装它有助于解决问题。

C:\Windows\Microsoft.Net\Framework64\v4.0.30319\aspnet_regiis -i

于 2013-06-28T20:03:59.743 回答
0

这个问题在我的已知场景中重现......

如果从浏览器中出现一个框架集或两个并行请求,如果这两个页面具有相同的自定义基础页面,则访问会话会由于多个工作线程而导致此异常...

更新:对于这个问题的所有患者,我在这里有我的发现!1. 我可以在 IE 浏览器 (IE10) 和 FIREFOX(22) 中重现此问题,尽管我在本地代码中设置了所有已启用的..etc.etc...,当连接选项卡中的 IE 设置 --> LAN设置有“为本地主机使用代理服务器...”复选框显示为已检查 - 没有有效的代理服务器设置...

当我在 IE 中取消选中此选项时,具有 DEFAULT Session 设置的相同代码会像 HORSE 一样运行!

希望能给点光明,

谢谢

于 2013-03-15T16:02:39.310 回答