Global.asax文件的使用

阅读: 评论:0

Global.asax文件的使用

Global.asax文件的使用

Global.asax文件的使用 2008年03月30日 星期日 13:19
Global.asax文件是Web应用程序的系统文件,属于选项文件,可有可无。当需要使用Application和Session对象的事件处理程序时,就需要创建此文件。 11.2.1 Global.asax 文件的结构 ASP.NET的Global.asax文件是ANSI文本文件,使用Windows记事本或VWD都可以编辑Global.asax文件的内容。 1. 创建Global.asax文件 Visual Web Developer可以创建Global.asax文件。启动VWD打开Ch11网站后,执行“文件”|“新建文件”命令,打开“添加新项”对话框。 图11-2 “添加新项”对话框 选择“全局应用程式类”选项(如果网站已经建立就不会看到此项目),单击“打开”按钮就可以在Web网站中创建Global.asax文件。一个Web网站只能拥有一个Global.asax文件。 2. Global.asax文件结构 Global.asax文件主要是定义Web应用程序的Application_Start()、Application_End()、Session_Start()和 Session_End()等事件处理程序,文件结构如下所示。 <%@ Application Language="VB" %> <script Runat="server"> Sub Application_Start(ByVal Sender As Object,_                     ByVal E As EventArgs) End Sub Sub Application_End(ByVal Sender As Object,_                    ByVal E As EventArgs) End Sub Sub Application_Error(ByVal Sender As Object,_                     ByVal E As EventArgs) End Sub Sub Session_Start(ByVal sender As Object,_                     ByVal e As EventArgs) End Sub Sub Session_End(ByVal sender As Object,_                     ByVal e As EventArgs) End Sub </script> 上述第1行程序代码是使用Application命令的Language属性声明使用Visual Basic 2005语法,在<script>标记中是Application和Session对象的事件处理程序,其说明如表11-3所示。 表11-3 Application和Session对象的事件处理程序
事件处理程序 说    明
Application_Start() 当第 1 位用户进入 ASP.NET 程序时,Application_Start 事件就触发,在触发后,就算有成千上万位用户进入网站都不会重新触发,除非 Web 服务器关机。通常用来初始化 Application 变量,例如初始的访客计数
Application_End() 当 Web 服务器关机时,Application_End 事件就会触发
Application_Error() 当产生未能处理错误时,触发 Application_Error 事件
Session_Start() 当用户建立 Session 时间时,就触发 Session_Star 事件,如果有 50 位用户,就触发 50 次事件,每个事件是独立触发的,不会互相影响,通常用来初始化用户专用的 Session 变量
Session_End() 当用户在默认时间内没有进入其他ASP.NET 程序时,就会触发此事件,时间是由 TimeOut 属性设定,通常是善后用途的程序代码,例如将 Session 变量存入数据库或文本文件
当fig文件(详见11-7节说明)的sessionstate模式设为InProc(此为默认值)才会触发Session_End事件,如果设为StateServer或SQLServer就不会触发此事件。 11.2.2 Global.asax文件的使用 在ASP.NET的Web应用程序中使用Global.asax文件时,注意,一个Web应用程序只能有唯一的Global.asax文件,其位置是Web应用程序的启动点目录。 1. Global.asax事件处理程序的执行顺序 当用户请求ASP.NET程序后,就会替每位用户建立Session时间和Application对象,接着检查ASP.NET应用程序是否含有Global.asax 文件。 如果有Global.asax文件,就将它编译成继承HttpApplication类的 .NET Framework 类,然后在执行 ASP.NET 文件的程序代码前触发 Application_Start 事件,执行 Global.asax 文件的 Application_Start()事件处理程序,并建立 Session对象,因为 Global.asax 文件存在,接着执行 Session_Start()事件处理程序。 当 Session 时间超过 TimeOut 属性的设定(默认20分钟)或执行 Abandon()方法,表示 Session 时间结束,就触发 Session_End事件执行 Session_End()事件处理程序,处理程序是在关闭 Session 对象前执行。 Web 服务器如果关机,在关闭 Application 对象前就会执行 Application_End()事件处理程序,当然也会结束所有用户的 Session 时间,执行所有用户的 Session_End()事件处理程序。 2. ASP.NET程序:Global.asax 在 Global.asax 文件的事件处理程序中建立程序代码(有需要才创建事件处理程序),以便显示事件处理程序的执行过程,如下所示。 01: <%@ Application Language="VB" %> 02: <script Runat="server"> 03: Sub Application_Start(ByVal Sender As Object,_ 04:                     ByVal E As EventArgs) 05:    Application("msg")= "Application开始...<br>" 06: End Sub 07: Sub Session_Start(ByVal Sender As Object,_ 08:                     ByVal E As EventArgs) 09:    Dim output As String = Application("msg") 10:    Response.Write(output) 11:    Application("msg")= ""   ' 清除Application变量 12:    Response.Write("Session时间开始...<br>") 13: End Sub 14: Sub Session_End(ByVal Sender As Object, _ 15:                     ByVal E As EventArgs) 16:    Application("msg")= "Session结束...<br>" 17: End Sub 18: Sub Application_BeginRequest(ByVal Sender As Object, _ 19:                              ByVal E As EventArgs) 20:    Response.Write("请求开始...<br>") 21: End Sub 22: Sub Application_EndRequest(ByVal Sender As Object, _ 23:                            ByVal E As EventArgs) 24:    Response.Write("请求结束...<br>") 25: End Sub 26: </script> 3. 程序说明 第3~6行是Application_Start()事件处理程序,第5行使用Application变量 msg 存储执行信息(Application 变量的说明请参阅第 11.3 节),因为执行此程序时尚未加载网页,所以只能使用 Application 变量来存储执行信息。文件没有 Application_End()事件处理程序,因为当执行此程序时,表示 Application 已经结束,并没有办法显示任何信息。 第 7~13 行是 Session_Start()事件处理程序,第 9~11 行显示 Application 变量值后,清除变量内容,第 12 行显示 Session 时间开始的信息。 第 14~17 行是 Session_End()事件处理程序,因为 Session 时间已经结束,所以第 16 行使用 Application 变量存储信息内容。最后第 18~25 行是 Application_BeginRequest()和 Application_EndRequest()两个事件处理程序,它们是在浏览程序中提出请求和结束请求时触发,在这两个事件间会触发 Page 对象的 Load 事件。 4. ASP.NET程序:Ch11-2-2.aspx 在 ASP.NET 程序中显示整个 Global.asax文件的事件处理程序的执行过程,包含网页请求事件的执行顺序,在 Web 窗体中含有两个按钮,可以更新网页和结束 Session 时间,如下所示。 01: <%@ Page Language="VB" %> 02: <script runat="Server"> 03: Sub Page_Load(Sender As Object,E As EventArgs) 04:    Response.Write("载入网页...<br>") 05: End Sub 06: Sub SessionOver(Sender As Object,E As EventArgs) 07:    Session.Abandon() ' 结束Session时间 08:    ' 转址至自已 09:    Response.Redirect("Ch11-2-2.aspx") 10: End Sub 11: </script> 12: <html> 13: <head><title>Ch11-2-2.aspx</title></head> 14: <body> 15: 显示网页内容...( 16: <% If Session.IsNewSession = True Then 17:       Response.Write("新的Session时间") 18:    Else 19:       Response.Write("同一个Session时间") 20:    End If %>) 21: <form Runat="server"> 22: <asp:Button Id="button0" Text="更新网页" Runat="server"/> 23: <asp:Button Id="button1" OnClick="SessionOver" 24:           Text="结束Session" Runat="server"/> 25: </form> 26: </body> 27: </html> 5. 程序说明 第3~5行是Page_Load()事件处理程序,第4行显示执行程序的信息。第6~10行是Button控件的Click事件处理程序,第7行使用Abandon()方法结束 Session时间,第11行转址重新加载自己。 第16~20行的If 条件使用IsNewSession属性检查是否为新建立的Session时间,第21~25行是两个按钮的Web窗体。 6. 网页预览 将Ch11/Ch11-2-2文件夹建立为虚拟目录后,启动浏览程序执行 Ch11-2-2.aspx 程序,可以看到执行过程的信息,如图11-3所示。 图11-3所述信息显示事件处理程序的执行顺序,首先执行 Application_Start事件,然后是 Application_BeginRequest 和 Session_Start 事件,因为 Application_Start 事件的信息是在 Session_Start 事件处理程序中显示的,所以顺序相反,Application_Start事件是在 Application_BeginRequest 事件前触发。 在新的 Session 时间开始后,触发 Page_Load 事件加载网页来显示网页内容,请求过程结束触发 Application_EndRequest 事件。 单击“结束 Session”按钮以Abandon()方法强迫结束Session时间,因为重新加载网页,可以看到Session结束后再次建立新的Session时间
 

本文发布于:2024-02-02 10:19:10,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170684035143149.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:文件   Global   asax
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23