Menu
×
   ❮     
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 全局.asa 文件


全局.asa 文件

全局.asa 文件是一个可选文件,它可以包含对对象的声明,变量和方法,这些对象,变量和方法可以被 ASP 应用程序中的每个页面访问。

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

全局.asa 文件只能包含以下内容

  • 应用程序事件
  • 会话事件
  • <object> 声明
  • 类型库声明
  • #include 指令

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


全局.asa 中的事件

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

Application_OnStart - 当第一个用户调用 ASP 应用程序中的第一个页面时发生。 此事件发生在 Web 服务器重新启动后或 Global.asa 文件被编辑后。 “Session_OnStart”事件在此事件后立即发生。

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

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

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

全局.asa 文件可能看起来像这样

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

sub Application_OnStart
'一些代码
end sub

sub Application_OnEnd
'一些代码
end sub

sub Session_OnStart
'一些代码
end sub

sub Session_OnEnd
'一些代码
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 设置对象的范围(会话或应用程序)
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") %>

类型库声明

类型库是与 COM 对象相对应的 DLL 文件内容的容器。 通过在 Global.asa 文件中包含对类型库的调用,可以访问 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”的会话变量中,并且可以从应用程序中的任何 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 文件中包含函数。

在下面的例子中,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>

全局.asa 例子

在这个例子中,我们将创建一个 Global.asa 文件,它计算当前访问者的数量。

  • Application_OnStart 在服务器启动时将 Application 变量“visitors”设置为 0
  • Session_OnStart 子例程在每次新访客到达时将“visitors”变量加一
  • Session_OnEnd 子程序每次触发时,都会将 "visitors" 的值减一。

全局.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>

×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.