继承Page类判断session的问题

wataxi2005 2008-11-28 11:07:08
这是之前的

public class BasePage:Page
{
public string virtualPath = ConfigurationManager.AppSettings["virtualPath"].ToString();
public BasePage()
{
if (Session["id"] == null)
{
HttpContext.Current.Response.Redirect("../Login.aspx");
}
}
}



这是修改后的


public class BasePage:Page
{
public string virtualPath = ConfigurationManager.AppSettings["virtualPath"].ToString();
public BasePage()
{
this.Load += new EventHandler(CheckSession());
}

private void CheckSession(object sender,EventArgs e)
{
if (Session["id"] == null)
{
HttpContext.Current.Response.Redirect("../Login.aspx");
}

}
}



修改后虽然可以解决我的问题,但是有些道理不是很明白,希望各位指教一下。

1.为什么普通继承Page的类不能直接在构造函数里操作session,而要加一个委托。

2.为什么一般的aspx.cs里的page_load里可以操作session


第一次在CSDN上提问。问了一些没有技术含量的问题,还望各位海涵。(不好意思,新手还没分)
...全文
109 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zetee 2008-12-12
  • 打赏
  • 举报
回复
BasePage 页面中,构造函数里面Session还没生成,所以Session是null的。在页面加载的时候才有值,不管委托的事,

你可以用其他事件来检查Session是否有值。
notear00 2008-12-12
  • 打赏
  • 举报
回复
死循环是因为你的Login.aspx是从BasePage继承,加载的时候CheckSession失败,就转去新的Login.aspx页面,就死循环了
notear00 2008-12-12
  • 打赏
  • 举报
回复
因为前者在生成BasePage的时候执行,HttpContext.Current.Session还不存在。后者的委托,是在BasePage执行Load()的时候执行方法的,这时HttpContext.Current.Session已经存在了。
wataxi2005 2008-11-28
  • 打赏
  • 举报
回复
难道没分这么惨?

加个问题:每个页面继承这个basepage的时候会出现死循环是怎么回事

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧