Active Server Pages 应用程序可以使用名为Global.asa 的特殊文件。每个应用程序都只有一个Global.asa文件,该文件位于应用程序的根目录下,包含有该程序全局性的信息。Global.asa文件有如下结构:
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
SUB Application_OnStart
END SUB</SCRIPT>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
SUB Application_OnEnd
END SUB</SCRIPT>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
SUB Session_OnStart
END SUB</SCRIPT>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
SUB Session_OnEnd
END SUB</SCRIPT>
Global.asa文件包含两个由应用程序事件驱动的子程序。Application_OnStart和Application_OnEnd子程序分别在程序开始、结束时执行。只能将一个脚本同这两个事件关联在一起。Application_Onstart在应用程序的第一个页面被请求时被驱动。该事件只被驱动一次,除非IIS服务结束,Global.asa文件被修改或使用Internet Service Manager将该应用程序卸载。
注意,Global.asa使用Microsoft扩展的HTML<SCRIPT>标签语法来规定脚本。在Global.asa文件中必须使用这种说明脚本的方法,不要用一般的脚本定界符<% and %>。Global.asa文件在前面例子中使用VBScript作为脚本语言,但也可以用其它脚本语言。不能在Global.asa文件中包含任何输出,特别不能使用任何HTML标签或Response.Write()方法。Global.asa文件本身不会被显示,仅仅用来包含脚本和对象。要创建一个应用程序启动时执行的脚本,可以简单的将该脚本加在Application_Onstart子程序中,如下例:
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
SUB Application_OnStart
DIM FileName, MyFS,MyFile
Set MyFS = Server.CreateObject( "Scripting.FileSystemObject" )
Set MyFile = MyFS.OpenTextFile( "c:\applog.txt", 8, TRUE )
MyFile.WriteLine NOW ( ) & " ?Application Started"
MyFile.Close
SET MyFile = Nothing
SET MYFS = Nothing
END SUB</SCRIPT>
此脚本记录了启动应用程序登录名为applog.txt文件的日期和时间。可以用此文件在要重新启动应用程序(如服务器崩溃时)时跟踪时间。
Global.asa文件还可用来声明应用程序范围的对象(见第一章相关部分)。例如,可使用下面HTML代码声明一个在应用程序中可被所有页面访问的Dictionary对象实例。<OBJECT RUNAT="Server"" SCOPE="Application" ID="MyDictionary"PROGID="Scripting.Dictionary"></OBJECT>将上面的HMTL代码包含入Global.asa文件时,应将其包含在任何子程序或脚本标签外部。例如,可以把对象声明放在Global.asa文件的最顶端。警告:声明应用程序范围的对象时要小心线程模式。声明一个使用单元线程模式的对象实例,像Dictionary对象时,对拥挤的网站的运行会产生严重影响(甚至可能出错)。使用<OBJECT>标签在Global.asa 文件内声明一个对象实例后,可以在任何Active Server Page中像使用内置的Active Server Page对象一样使用该对象。不需要再次声明。