做了一个页面的基类PageBase继承于System.Web.UI.Pagepublic 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"/>

解决方案 »

  1.   

    问题已解决..错误原因:在PageBase的构造函数中使用Session按照Page的创建流程,,,造成了先使用了Session后面才创建Session现在重写了OnInit  在 base.OnInit后再使用Session 问题解决..
      

  2.   

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

  3.   

    protected override void OnInit(EventArgs e)
            {
                base.OnInit(e);
                if (Session["RoleID"] == null || Session["UserName"] == null)
                {
                    Response.Write("<script language='javascript'>alert('登陆已过期,请重新登陆!');window.location=\"login.aspx\"</script>");
                    return;
                }
            }