菜单
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

ASP Global.asa 文件


Global.asa 文件

Global.asa 文件是一个可选文件,其中可以包含 ASP 应用程序中所有页面都可以访问的对象、变量和方法的声明。

可以在 Global.asa 中使用所有有效的浏览器脚本(JavaScript、VBScript、JScript、PerlScript 等)。

Global.asa 文件只能包含以下内容:

  • Application 事件
  • Session 事件
  • <object> 声明
  • TypeLibrary 声明
  • #include 指令

注意: Global.asa 文件必须存储在 ASP 应用程序的根目录中,并且每个应用程序只能有一个 Global.asa 文件。


Global.asa 中的事件

在 Global.asa 中,您可以告知应用程序和会话对象在应用程序/会话开始时做什么,以及在应用程序/会话结束时做什么。代码放置在事件处理程序中。Global.asa 文件可以包含四种类型的事件:

Application_OnStart - 当第一个用户访问 ASP 应用程序的第一个页面时发生。在 Web 服务器重启后或 Global.asa 文件编辑后发生此事件。“Session_OnStart”事件紧随此事件之后发生。

Session_OnStart - 每次新用户请求 ASP 应用程序中的第一个页面时都会发生此事件。

Session_OnEnd - 每次用户结束会话时都会发生此事件。在用户未在指定时间(默认为 20 分钟)内请求页面后,用户会话即结束。

Application_OnEnd - 在最后一个用户结束会话后发生此事件。通常,在 Web 服务器停止时会发生此事件。此过程用于在应用程序停止后清理设置,例如删除记录或将信息写入文本文件。

Global.asa 文件可能看起来像这样:

<script language="vbscript" runat="server">

sub Application_OnStart
'some code
end sub

sub Application_OnEnd
'some code
end sub

sub Session_OnStart
'some code
end sub

sub Session_OnEnd
'some code
end sub

</script>

注意: 由于我们无法使用 ASP 脚本分隔符(<% 和 %>)在 Global.asa 文件中插入脚本,因此我们将子例程放在 HTML <script> 元素内。



<object> 声明

可以通过使用 <object> 标签在 Global.asa 中创建具有会话或应用程序范围的对象。

注意: <object> 标签应放在 <script> 标签之外!

语法

<object runat="server" scope="scope" id="id" {progid="progID"|classid="classID"}>
....
</object>

参数 描述
scope 设置对象的范围(Session 或 Application)
id 为对象指定一个唯一的 ID
ProgID 与类 ID 关联的 ID。ProgID 的格式为 [Vendor.]Component[.Version]

必须指定 ProgID 或 ClassID 中的一个。

ClassID 为 COM 类对象指定一个唯一的 ID。

必须指定 ProgID 或 ClassID 中的一个。

示例

第一个示例使用 ProgID 参数创建了一个会话范围的对象“MyAd”。

<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
</object>

第二个示例使用 ClassID 参数创建了一个应用程序范围的对象“MyConnection”。

<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>

您可以从 ASP 应用程序中的任何页面引用对象“MyAd”。

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="filename" uuid="id" version="number" lcid="localeid"
-->

参数 描述
file 指定类型库的绝对路径。

file 参数或 uuid 参数是必需的。

uuid 指定类型库的唯一标识符。

file 参数或 uuid 参数是必需的。

version 可选。用于选择版本。如果找不到请求的版本,则使用最新版本。
lcid 可选。要用于类型库的区域设置标识符。

错误值

服务器可以返回以下错误消息之一:

错误代码 描述
ASP 0222 无效的类型库规范
ASP 0223 找不到类型库
ASP 0224 无法加载类型库
ASP 0225 无法包装类型库

注意: METADATA 标签可以出现在 Global.asa 文件的任何位置(在 <script> 标签内外)。但是,建议将 METADATA 标签放在 Global.asa 文件的顶部附近。


限制

有关可以在 Global.asa 文件中包含的内容的限制

  • 您不能显示在 Global.asa 文件中编写的文本。此文件无法显示信息。
  • 您只能在 Application_OnStart 和 Application_OnEnd 子例程中使用 Server 和 Application 对象。在 Session_OnEnd 子例程中,您可以使用 Server、Application 和 Session 对象。在 Session_OnStart 子例程中,您可以使用任何内置对象。

如何使用子例程

Global.asa 通常用于初始化变量。

下面的示例显示了如何检测访问者首次访问网站的确切时间。时间存储在名为“started”的 Session 变量中,并且可以在应用程序中的任何 ASP 页面访问“started”变量的值。

<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 文件中包含函数。

在下面的示例中,当 Web 服务器启动时,Application_OnStart 子例程会发生。然后 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 在服务器启动时将 Application 变量“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>现在有 <%response.write(Application("visitors"))%> 位在线!</p>
</body>
</html>

×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持