从System.Web.UI.Page继承时,Session为null

时间:2010-06-16 14:31:35

标签: c# asp.net inheritance

我想用一些额外的东西扩展System.Web.UI.Page-class。 我需要会话变量的值。

问题是Session-object为null ...

public class ExtendedPage : System.Web.UI.Page {
   protected foo;   

   public ExtendedPage() {
      this.foo = (int)HttpContext.Current.Session["foo"];   // NullReferenceException
   }
}

如果我将带有session-object的部分移动到Load-Event中,一切正常......

public class ExtendedPage : System.Web.UI.Page {
   protected foo;

   public ExtendedPage() {
      this.Load += new EventHandler(ExtendedPage_Load);
   }

   void ExtendedPage_Load(object sender, EventArgs e) {
      this.foo = (int)HttpContext.Current.Session["foo"];
   }
}

为什么在第一种情况下会话对象为空

2 个答案:

答案 0 :(得分:5)

构建Session对象后,Page属性稍后会在Page lifecycle中设置。

答案 1 :(得分:0)

您必须在.aspx页面中继承ExtendedPage类。

在HttpContext

中运行时会有Session