本来在vs2003中在global.cs文件中有一个自定义判断页面是否登陆(有[“session”]),现在要到vs2005中实现。应为2005里面global文件没有cs文件,不知道这样做了??,通过这几天在博客园的“博问”求助,今天终于解决问题了。

 

 protected void Application_AcquireRequestState(Object sender, EventArgs e)
    {
        bool logined = true;

        /*UserBean user ;
        user =  UserDao.getUserInfo("Admin");
        Session.Add("user",user);*/
        Page TargetPage = ((sender as HttpApplication).Context.Handler) as Page;
        //获取当前请求的页面,HttpApplication 类,定义 ASP.NET 应用程序中的所有应用程序对象通用的方法、属性和事件。此类是由用户在 global.asax 文件中定义的应用程序的基类。即在此定义的该类中的方法、属性和事件,所有页面都能用。
        //备注:此类的实例是在 ASP.NET 基础结构中创建的,而不是由用户直接创建的。一个实例在其生存期内被用于处理多个请求,但它一次只能处理一个请求。这样,成员变量才可用于存储针对每个请求的数据。

        if (TargetPage == null)
            return;
       
        string TargetPageName = TargetPage.ToString().Replace("_ASP.", "").Replace("ASP.", "").Replace("_aspx", "");

        if (!(TargetPageName.ToUpper().Equals("LOGIN") || TargetPageName.ToUpper().Equals("NOTLOGINED") || TargetPageName.ToUpper().Equals("FORGETPWD") || TargetPageName.ToUpper().Equals("CREATECODE") || TargetPageName.ToUpper().Equals("ENCRYPT") || TargetPageName.ToUpper().Equals("HASNORIGHTS") || TargetPageName.ToUpper().Equals("LOGOUT")))
        {
            try
            {
                if (Session["user"] == null)
                    logined = false;
                else if (((UserBean)Session["user"]).ID <= 0)
                    logined = false;
            }
            catch
            {
                logined = false;
            }
        }

在这个事件中处理就可代替原来2003中的自定义事件了。

        if (logined == false) Response.Redirect(Config.APPRootName + "NotLogined.aspx");
    }

posted on 2008-07-28 11:59  zjianjun/Andy  阅读(491)  评论(0)    收藏  举报