Global.asa文件
Global.asa文件是一个可选文件,可以包含可以通过每个页面中的ASP应用程序访问的对象,变量和方法的声明。
所有有效的浏览器脚本(JavaScript, VBScript, JScript, PerlScript, etc.)可用于在Global.asa中。
Global.asa文件只能包含以下内容:
- 应用程序事件
- 会话事件
- <对象>声明
- TypeLibrary声明
- #include指令
Note: Global.asa文件必须存放在ASP应用程序的根目录下,每个应用程序只能有一个Global.asa文件。
Global.asa中的事件
在Global.asa中你可以告诉Application和Session对象怎么做时,应用/会话开始,什么时,应用/会话结束做。 这样做的代码放置在事件处理程序。 Global.asa文件可以包含四种类型的事件:
Application_OnStart -当第一个用户呼叫的第一页中的ASP应用程序时发生。 Web服务器重新启动或Global.asa文件编辑后后发生此事件。 该"Session_OnStart"事件此事件之后立即发生。Session_OnStart -此事件发生每当一个新的用户在ASP应用程序请求他或她的第一页。
Session_OnEnd -此事件发生每当用户结束会话。 页面未被要求用户指定的时间后,用户会话结束(by default this is 20 minutes) 。
Application_OnEnd -最后一个用户已经结束了会议后发生此事件。 通常情况下,当Web服务器停止该事件发生。 这个程序是用来设置清理后停止的应用,如删除记录或将信息写入到文本文件。
一个Global.asa文件可能看起来是这样的:
<script language="vbscript" runat="server">
sub Application_OnStart
' Note:由于我们不能使用ASP脚本分隔符(<% and %>)在Global.asa文件中插入脚本,我们把子程序的HTML里面<script>元素。
的<object>声明
有可能通过使用该创建Global.asa中与会话或应用范围对象<object>标记。
Note:在<object>标签应该是外面<script>标记!
句法
<object runat="server" scope=" 参数 描述 scope 设置对象的范围(either Session or Application) id 指定一个唯一的ID为对象 ProgID 与类ID相关的ID。 对于程序id的格式为[商]成分[.Version] 无论ProgID还是ClassID都必须指定。
ClassID 指定COM类对象的唯一标识。 无论ProgID还是ClassID都必须指定。
例子
第一个示例创建名为会话范围的目的"MyAd"通过使用ProgID参数:
<object runat="server" scope="session" id="MyAd"
progid="MSWC.AdRotator">
</object> 第二个示例创建的命名的应用范围的对象"MyConnection"使用的ClassID参数:
<object runat="server" scope="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object> 在Global.asa文件中声明的对象可以通过使用应用程序中的任何脚本:
GLOBAL.ASA:
<object runat="server" scope="session" id="MyAd"
progid="MSWC.AdRotator">
</object>
You could reference the object "MyAd" from any page in the ASP application:
SOME .ASP FILE:
<%=MyAd.GetAdvertisement("/banners/adrot.txt")%>
TypeLibrary声明
甲的TypeLibrary是一个DLL文件的对应于一个COM对象的内容的容器。 通过包含在Global.asa文件中的TypeLibrary的调用,COM对象的常量可以访问,错误可以通过ASP代码得到更好的报道。 如果您的Web应用程序依赖于已在类型库中声明的数据类型的COM对象,你可以声明,Global.asa中的类型库。
句法
<!--METADATA TYPE="TypeLib"
file=" 参数 描述 file 指定类型库的绝对路径。 无论是文件参数或UUID参数是必需的
uuid 指定类型库的唯一标识符。 无论是文件参数或UUID参数是必需的
version 可选的。 用于选择版本。 如果没有找到所请求的版本,那么最新版本使用 lcid 可选的。 用于类型库的区域设置标识符 错误值
该服务器可以返回以下错误消息之一:
错误代码 描述 ASP 0222 无效的类型库规范 ASP 0223 类型库未找到 ASP 0224 类型库不能加载 ASP 0225 类型库不能被包装
Note:元数据标签可以在Global.asa文件中出现的任何地方(both inside and outside <script> tags) 。 但是,建议METADATA标签旁边显示Global.asa文件的顶部。
限制
什么,你可以在Global.asa文件中包括限制:
- 不能显示写在Global.asa文件的文本。 此文件无法显示信息
- 您只能在Application_OnStart和Application_OnEnd子程序使用服务器和应用程序对象。 在子程序的Session_OnEnd,您可以使用服务器,应用程序和Session对象。 在子程序的Session_OnStart你可以使用任何内置对象
如何使用子程序
Global.asa中经常被用来初始化变量。
下面的例子演示了如何检测的准确时间访问者第一次来到一个网站。 时间存储在一个名为会话变量"started" ,以及价值的"started"变量可以从应用程序中的任何ASP页面访问:
<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end sub
</script> Global.asa中也可以用来控制页面访问。
下面的例子演示了如何对每个新的访问者重定向到另一个页面,在这种情况下,以一个名为页"newpage.asp" :
<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
</script> 而且您可以在Global.asa文件的功能。
在Application_OnStart副程式下面的例子在Web服务器启动时发生。 然后,Application_OnStart子例程调用另一个名为子程序"getcustomers" 。 该"getcustomers"子程序打开数据库并检索从一个记录集"customers"表。 记录集分配给一个阵列,其中它可以从任何ASP页面访问而不查询数据库:
<script language="vbscript" runat="server">
sub Application_OnStart
getcustomers
end sub
sub getcustomers
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs=conn.execute("select name from customers")
Application("customers")=rs.GetRows
rs.Close
conn.Close
end sub
</script>
Global.asa中示例
在这个例子中,我们将创建一个计算当前游客人数Global.asa文件。
- 该Application_OnStart设置应用程序变量"visitors"为0,在服务器启动时
- 该子程序的Session_OnStart加一的变量"visitors"每当一个新的访问者到达时间
- 该子程序的Session_OnEnd减去一个从"visitors"每个这个子程序被触发时
Global.asa文件中:
<script language="vbscript" runat="server">
Sub Application_OnStart
Application("visitors")=0
End Sub
Sub Session_OnStart
Application.Lock
Application("visitors")=Application("visitors")+1
Application.UnLock
End Sub
Sub Session_OnEnd
Application.Lock
Application("visitors")=Application("visitors")-1
Application.UnLock
End Sub
</script> 要显示在ASP文件目前参观人数:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%>
online now!</p>
</body>
</html>