[已解决问题] vs2005的Global.asax文件中要添加一个开始执行处理页之前的事件
提问时间: 2008-07-24 10:48
悬赏分:20 浏览:307 次

vs2005的Global.asax文件中要添加一个开始执行处理页之前的事件,应该这样做?

在2005中是这样的

public Global()
{
   InitializeComponent();

private void InitializeComponent()
{    
this.components = new System.ComponentModel.Container();
this.PreRequestHandlerExecute += new System.EventHandler(this.CheckLogin);//在转到请求的页面之前执行CheckLogin事件!
}


问题补充:在2003中是写在cs文件中的
Page TargetPage = ((sender as HttpApplication).Context.Handler) as Page
在2005中不能得到请求页面的对象??(null)

protected void Application_BeginRequest(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 (((ZCSY.Commer.Bean.UserBean)Session["user"]).ID <= 0)
logined = false;
}
catch
{
logined = false;
}
}

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

}

最佳答案
protected void Application_BeginRequest(object sender, EventArgs e) { .... }
2008/7/24 11:09:44 回答者:deerchao
评论
   您需要登录以后才能回答!
 

我要提问

我的问题


快到期问题

> 问题排行榜

相关内容

相关链接