错误提示:
只有在配置文件或 Page 指令中将启用会话状态设置为真时,才可以使用会话状态代码如下
using System.Web.SessionState;
public class PageBase : System.Web.UI.Page
{
public PageBase()
{
//判断SESSION是否为空,如果为空则跳转到登陆页面
Session["UserName"]="aa";
Response.Write("Session is Null!");

}
}如果把Session["UserName"]="aa" 该成
System.Web.HttpContext.Current.Session["UserName"]="aa";
则出现  未将对象引用设置到对象的实例 错误
郁闷啊。。在WEB.CONFIG中也加了
 <pages buffer="true"
           enableSessionState="true"
           autoEventWireup="true"
           smartNavigation="true"
  />
还是不行。。这个问题挺搞,难道Session不能用在构造函数中?

解决方案 »

  1.   

    发现在PageBase中其他地方调研Session就没问题,好象是构造函数的问题,谁知道为什么?
    郁闷50分没人要吗?
      

  2.   

    可以将: //判断SESSION是否为空,如果为空则跳转到登陆页面
    Session["UserName"]="aa";
    Response.Write("Session is Null!");放到 PageLoad事件中,一般都是在PageLoad事件中身份验证的
      

  3.   

    呵呵,谢谢
    但是我不想把他放到Pageload中,那样的话没个页面都要判断,如果能放到构造函数中其他继承该页面的网页都不用判断了
      

  4.   

    呵呵,谢谢
    但是我不想把他放到Pageload中,那样的话没个页面都要判断,如果能放到构造函数中其他继承该页面的网页都不用判断了
    ---------------------------------------------------------------------
    这个比较好解决,在每个页面上面放个公共的USERCONTROL,那个USERCONTROL什么都不需要显示,只需要在PAGELOAD里验证SESSION就可,每次创建页面你只要鼠标拖放就可以拉,而且便于代码维护,用处相当于一个类吧
    不知道对你有没帮助
      

  5.   

    你的类继承自System.Web.UI.Page,而你的类的构造函数由没有调用基类的构造函数因此,你可以试试public PageBase():Page(){
           //you code
    }
      

  6.   


    呵呵,我这个类还有许多getset属性存权限及当前用户信息,如果实现验证就很舒服~~~
    这个问题可以通过很多方法避免,但我现在是在想为什么不能在最方便的构造函数实现,是什么问题。
    不管怎么样还是谢谢你~~明天没有好的解答就结贴
      

  7.   

    to yarshray(saga jion(心飘情落))
    public PageBase():base() 
    还是不行
      

  8.   

    public PageBase()
    {
    this.Load += ...
    }xxx OnPageLoad(...
    {
    Session["UserName"]="aa";
    Response.Write("Session is Null!");
    }你得了解ASP.NET各个对象的生命周期
      

  9.   

    但是我不想把他放到Pageload中,那样的话没个页面都要判断,如果能放到构造函数中其他继承该页面的网页都不用判断了
    __________________________________
    其实不是这样的,你的PageBase是基础了Page类,那么你重载其OnLoad方法,在里面检查Session,之后的页面基础PageBase,在重载Onload的时候base.OnLoad (e);就可以了,在CodeProject.com上面看到也是这样写的吧。
      

  10.   

    感谢 Sunmast(速马/MVP) 我刚才也是在往这方面想,在翻资料呵呵,学艺不精