最新的Web开发教程
 

ASP Global.asa文件


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>