Session失效后页面跳转的统一解决办法

huizhang212 2009-12-31 06:35:15
VS2005开发的项目,后台是C#程序。
项目中编写的有个BasePage类(继承System.Web.UI.Page)来统一处理所有页面公共的逻辑问题。
所有的页面都会继承BasePage,而不再继承System.Web.UI.Page。
在系统登录的时候将用户信息放入了Session里
C# Code
Session.Add("Admin", admin);

目的是:
在BasePage中 去Session里取Addmin,如果取不到(1.Session失效,2.没有登录),页面跳转到登陆页面
C# Code
Admin admin = (Admin)Session["Admin"];
if (admin == null)
{
//跳转到登陆页面
JScript.JavaScriptTopLocationHref("Login.aspx", Page);

//Response.Close();
return;
Response.End();
//System.Environment.Exit(0);
}

问题是:
由于当前页面继承BasePage,所以程序会先执行BasePage的Load函数,然后执行当前页面的Load函数
那么如果取不到Admin的话,程序跳到登录页面。可是程序还会继续执行当前页面的Load,在当前页面上也许会用的Admin,但是找不到,这时页面会报错,而没有达到跳转登录页面的效果。
解决思路:在BasePage里结束程序的执行。
请教:如何在BasePage里结束掉程序而不在执行子页面的Load。

注:
//Response.Close()
//Response.End();
//System.Environment.Exit(0);
这些都达不到效果,要么报错,要么无法跳到登录页面。
...全文
481 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
huizhang212 2010-01-22
  • 打赏
  • 举报
回复
谢谢各位,问题解决了!
gukun1122 2010-01-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyq11 的回复:]
public class BasePage : System.Web.UI.Page
    {
     
     
      public  BasePage()
      {
       

      }
   
      protected override void OnInit(EventArgs O)
      {
          if (base.Session["UserId"] == null || base.Session["UserId"].ToString().Equals(""))
          {
              Response.Redirect("~/Error.aspx");
          }
      }
     
    }

public partial class Error : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write(" <script>top.location.href='login.aspx'; </script>");
        }
    }

[/Quote]
恩,用Error 页面做个跳板页面,就可以了~
三碗猪脚 2010-01-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyq11 的回复:]
public class BasePage : System.Web.UI.Page
    {
     
     
      public  BasePage()
      {
       

      }
   
      protected override void OnInit(EventArgs O)
      {
          if (base.Session["UserId"] == null || base.Session["UserId"].ToString().Equals(""))
          {
              Response.Redirect("~/Error.aspx");
          }
      }
     
    }

public partial class Error : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write(" <script>top.location.href='login.aspx'; </script>");
        }
    }

[/Quote]


如wuyq11兄的

定义页面基类,重写OnInit事件,在基类中检查SESSION,执行页面跳转
newdigitime 2009-12-31
  • 打赏
  • 举报
回复
用Response.Redirect
wuyq11 2009-12-31
  • 打赏
  • 举报
回复
public class BasePage : System.Web.UI.Page
{


public BasePage()
{


}

protected override void OnInit(EventArgs O)
{
if (base.Session["UserId"] == null || base.Session["UserId"].ToString().Equals(""))
{
Response.Redirect("~/Error.aspx");
}
}

}

public partial class Error : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(" <script>top.location.href='login.aspx'; </script>");
}
}
zsyok 2009-12-31
  • 打赏
  • 举报
回复
Session怎么会失效呢?
igelf 2009-12-31
  • 打赏
  • 举报
回复
BasePage
protected void Page_Init(Object sender, EventArgs e)
{
//...
}

62,051

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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