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

问题是会话对象为空...

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

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


如果我将带有会话对象的部分移到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"];
   }
}


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

最佳答案

在构造Session对象之后,将在Page lifecycle中设置Page属性。

07-25 20:36