您的位置:首页 > 移动开发

WEB程序的执行过程!

2005-10-25 15:41 281 查看
        WEB程序的执行过程一直是我迷惑的问题,虽然查了许多资料,但是理解依旧不明朗,一连拖了几天,今天才用调试的方法跟踪了一下WEB的执行过程,写出来是为给自己留个笔记,同时也希望大家能指正其中错误之处!毕竟一人理解有限!
       调试环境:WIN2K ,VS.NET2003,ASP.NET+C#登录程序:Logon.aspx,Default.aspx;
       调试说明:Default.aspx为保护页,未登录不允许访问,将其设为起始页,若未登录则转跳到Logon.aspx;
        调试步骤:
首先在Global.asax文件中将其中所有过程设置断点按F5运行,或使用VS.NET中调试>逐过程;
程序中过程执行情况:    Global.asax.cs文件中过程执行顺序:Application_Start -〉Application_BeginRequest -〉Application_AuthenticateRequest -〉Application_EndRequest -〉Application_BeginRequest -〉Application_AuthenticateRequest -〉Session_Start -〉Application_EndRequest -〉未见执行Default.aspx页面代码(说明:除了Session_Start 过程中有代码外,其余过程均未添加任何代码。)页面转跳到Logon.aspx                                                            输入用户名调试:Application_BeginRequest -〉Application_AuthenticateRequest -〉执行Logon.aspx页面代码(登录验证代码)-〉Application_EndRequest -〉Application_BeginRequest -〉Application_AuthenticateRequest -〉验证成功进入Default.aspx(执行Page_Load中代码)-〉Application_EndRequest
本来以为调试到此结束,于是点页面中的注销,程序在Application_BeginRequest处断开(汗!经验不够也就罢了,理解能力也这么差劲!)接着按F5调试:Application_BeginRequest -〉Application_AuthenticateRequest -〉执行Default.aspx页面导入代码 -〉Application_EndRequest -〉Application_BeginRequest -〉Application_AuthenticateRequest -〉Application_EndRequest -〉转跳到Logon.aspx
至此程序调试告一段落,下面请看上述调试结果分析(纯属个人分析,如未有错误之处,那是运气使然,还望大家指正错误的地方)                                                                                                                         本调试相当于程序第一次运行情况下:请看Global.asax运行顺序                                                           首先程序启动触发Application_Star过程,然后触发 Application_BeginRequest 过程(个人认为是浏览器发送请求,是程序会话,不知对否),触发Application_AuthenticateRequest 验证过程,触发Application_EndRequest 过程;不知道大家注意没有,上述过程被触发了两次,两次唯一不同的地方是第二次有Session_Start 过程;现在我说一下自己的观点,第一次导致过程触发的原因是浏览器请求,第二次是HTTP请求(也就是页面请求),下面再把程序弄成初次运行的情况下(去掉Session_Start 中代码)来验证我的观点:执行过程:Application_Start -〉Application_BeginRequest -〉Application_AuthenticateRequest -〉Application_EndRequest -〉Application_BeginRequest -〉Application_AuthenticateRequest -〉Session_Start -〉Application_EndRequest -〉未见执行Default.aspx页面代码页面转跳到Logon.aspx       天呀,难道我的分析不正确?

   哪位有经验的高手给个答案啊!    个人认为,因为第二次触发中有Session_Start 所以应该是HTTP会话,而第一次,因为首先要打开浏览器,也就是程序会话.
另外有个问题,就是在关闭浏览器退出程序的时候并不出发Application_End过程!查了一下资料,资料里说:Application_End在应用程序终止时被触发一次,这我搞不懂了,在什么情况下应用程序算是被终止? 难道这个由服务器决定?用户关闭浏览器不算终止程序么?说这样的话或许是我对B/S结构了解不深吧!
      好了,调试就到这了!我也写不出来什么了!错误的地方,错误的理解还希望大家指正出来!
           
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息