日期:2014-05-18  浏览次数:20844 次

求助!继承自System.Web.UI.Page类中使用 session 遇到的问题
做了一个页面的基类PageBase继承于System.Web.UI.Page

C# code
public abstract class PageBase : System.Web.UI.Page


在PageBase中如何使用Session???

我直接用 Session["Name"]

提示:只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 <configuration>\<system.web>\<httpModules> 节中包括 System.Web.SessionStateMod 或自定义会话状态模块。

使用 HttpContext.Current.Session["User"] = "";

提示:未将对象引用设置到对象的实例..

如果在页面中使用(这个页面继承自PageBase)

使用 Session["Name"] 或者 HttpContext.Current.Session["User"] = "";都没有问题

我自己在web.config中设置SessionState为<sessionState mode="InProc" timeout="20"/>

------解决方案--------------------
这个是常见的一个问题,很多人在继承自Page的页面基类的构造函数中进行判断用户请求页是否登录状态,这个不不可以的,因为Session信息并不是在构造函数中可以获取的,而是需要在经过OnInit后才行。当然正确的应该在Page_Load()函数中访问Session状态。