Session失效后页面跳转的统一解决办法
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);
这些都达不到效果,要么报错,要么无法跳到登录页面。