【发布时间】:2012-10-27 22:56:47
【问题描述】:
我没有使用 MVC、URL 重写、自定义 HTTP 模块等。从继承 System.Web.UI.Page 的网页或通过 System.Web.HttpContext.Current 对 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>
【问题讨论】:
-
使用您的 web.config 示例,我在 Visual Studio 2010 中创建了一个新的 .NET 4.0 Web 应用程序,并且能够更新会话变量。我想知道您的应用程序中是否还有其他原因导致问题。您能否发布一个仍然存在问题的应用的精简版本?
-
@csm8118 我太能够在请求的早期更新会话变量。但是,当我稍后在请求中尝试访问该 Session 变量时,我遇到了这个问题。
-
您在请求中的什么时候收到错误?您可以发布引发错误的代码吗?
-
@csm8118 流程如下: 1) 用户通过 Default.aspx 登录。如果登录成功,则在 Default.aspx 的代码旁为用户设置会话。这分配得很好。 2) 用户被重定向到 Home.aspx。 Home.aspx 的代码旁边继承了一个名为 BasePage 的自定义类,该类继承了 System.Web.UI.Page。在 BasePage 中,它正在尝试访问 Session(我已经通过 Session 和 System.Web.HttpContext.Current.Session 尝试过),这就是异常发生的时候。
-
看来 Home.aspx 是当时的罪魁祸首。您可以发布 Home.aspx 的 .aspx 页面吗? Home.aspx 的页面指令中是否有
EnableSessionState="false"(.aspx 顶部的<%@ Page ...)?
标签: asp.net session web-config session-state