悬赏园豆:20
[已解决问题]
解决于 2008-07-24 15:02
<P>vs2005的Global.asax文件中要添加一个开始执行处理页之前的事件,应该这样做?</P>
<P>在2005中是这样的</P>
<P>public Global()<BR>{<BR> InitializeComponent();</P>
<P>} </P>
<P>private void InitializeComponent()<BR>{ <BR>this.components = new System.ComponentModel.Container();<BR>this.PreRequestHandlerExecute += new System.EventHandler(this.CheckLogin);//在转到请求的页面之前执行CheckLogin事件!<BR>}</P>
问题补充:
在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");
}