用Java开发时,一般都用一个抽象类继承HttpServlet来控制
public abstract class FormObject extends HttpServlet {
}
今天在用.NET开发时,也希望创建一个抽象基类,该类继承System.Web.UI.Page,以便打开页面时判断是否登陆。但在其构造函数中使用Session发现问题。
有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 <configuration>\<system.web>\<httpModules> 节中包括 System.Web.SessionStateMod 或自定义会话状态模块。
解决方法:重写父类的OnInit,并在其内加入Session的访问即可public abstract class FormObject : System.Web.UI.Page
{
public FormObject()
{
}
protected override void OnInit(EventArgs e)//Session的判断要放到OnInit中,而不是放到FormObject的基类中
{
base.OnInit(e);
if (Session["userid"] == null || Session["userid"].ToString() == "")
{
Response.Redirect("./ErrorsPage.aspx");
return;
}
}
}