Heim >Backend-Entwicklung >C#.Net-Tutorial >Detaillierte Einführung in die Datei Global.asa in ASP

Detaillierte Einführung in die Datei Global.asa in ASP

Y2J
Y2JOriginal
2017-05-19 10:55:301508Durchsuche

Die Datei Global.asa ist eine optionale Datei, die Deklarationen von Objekten, Variablen und Methoden enthält, auf die jede Seite in einer ASP-Anwendung zugreifen kann.

Global.asa-Datei

Die Global.asa-Datei ist eine optionale Datei, die die Deklaration von Objekten, Variablen und Methoden enthält. Alle legalen Browser-Skripte können in Global.asa verwendet werden.

Global.asa-Datei kann Folgendes enthalten:

Anwendungsereignis

Sitzungsereignis

72e31c0c8eaa8580d528fec50944a1a0-Deklaration

TypeLibrary-Deklaration

#include-Direktive

Hinweis: Die Global.asa-Datei muss im Stammverzeichnis der ASP-Anwendung gespeichert werden und jede Anwendung kann nur eine Global.asa haben dokumentieren.

Ereignisse in Global.asa

In Global.asa können wir den Anwendungs- und Sitzungsobjekten mitteilen, was sie beim Starten und Beenden tun sollen. Der Code zum Ausführen dieser Aufgabe wird im Ereignisoperator platziert. Die Datei Global.asa kann vier Arten von Ereignissen enthalten:

Application_OnStart – Dieses Ereignis tritt auf, wenn der erste Benutzer die erste Seite aus einer ASP-Anwendung aufruft. Dieses Ereignis tritt auf, nachdem der Webserver neu gestartet oder die Datei Global.asa bearbeitet wurde. Das Ereignis „Session_OnStart“ tritt unmittelbar nach diesem Ereignis ein.

Session_OnStart – Dieses Ereignis tritt jedes Mal auf, wenn ein neuer Benutzer seine erste Seite in einer ASP-Anwendung anfordert.

Session_OnEnd – Dieses Ereignis tritt immer dann ein, wenn der Benutzer die Sitzung beendet. Wenn innerhalb der angegebenen Zeit (das Standardereignis ist 20 Minuten) keine Seite angefordert wird, wird die Sitzung beendet.

Application_OnEnd – Dieses Ereignis tritt auf, nachdem der letzte Benutzer seine Sitzung beendet hat. Normalerweise tritt dieses Ereignis auf, wenn der Webserver gestoppt wird. Mit dieser Unterroutine werden Einstellungen gelöscht, nachdem die Anwendung gestoppt wurde, beispielsweise das Löschen von Datensätzen oder das Schreiben von Informationen in eine Textdatei.

Global.asa-Datei könnte so aussehen:

<script language="vbscript" runat="server">
sub Application_OnStart
  &#39;some code
end sub
sub Application_OnEnd
  &#39;some code
end sub
sub Session_OnStart
  &#39;some code
end sub
sub Session_OnEnd
  &#39;some code
end sub
</script>

Hinweis: Da ASP-Skripttrennzeichen (3cd8a319deec813d0b1652c1ab3c7255) in Global nicht verwendet werden können Um ein Skript in eine .asa-Datei einzufügen, müssen wir das HTML-Element 3f1c4e4b6b16bbbd69b2ee476dc4f83a verwenden.

273238ce9338fbb04bee6997e5552b95 Die Deklaration

kann mithilfe des 273238ce9338fbb04bee6997e5552b95-Tags ein Objekt mit Sitzungs- oder Anwendungsbereich erstellen.

Hinweis: Das 273238ce9338fbb04bee6997e5552b95-Tag sollte außerhalb des 3f1c4e4b6b16bbbd69b2ee476dc4f83a-Tags stehen.

Syntax:

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

Parameter Beschreibung

scope Legt den Umfang (Scope) des Objekts (Sitzung oder Anwendung) fest.

id Geben Sie eine eindeutige ID für das Objekt an.

ProgID Die mit ClassID verknüpfte ID. Das Format der ProgID ist: [Vendor.]Component[.Version]. Es muss ProgID oder ClassID angegeben werden.

ClassID Gibt eine eindeutige ID für ein COM-Klassenobjekt an. Es muss ProgID oder ClassID angegeben werden.

Instanzen

Die erste Instanz erstellt ein Sitzungsbereichsobjekt mit dem Namen „MyAd“ unter Verwendung des ProgID-Parameters:

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

Die zweite Instanz erstellt ein

<object runat="server" scope="application" id="MyConnection"classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object>

mit dem Namen „MyConnection“ unter Verwendung des ClassID-Parameters. Diese in dieser Global.asa-Datei deklarierten Objekte können von jedem Skript in der Anwendung verwendet werden.

GLOBAL.ASA:

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

Sie können von jeder Seite Ihrer ASP-Anwendung aus auf dieses „MyAd“-Objekt verweisen:

Eine .ASP-Datei:

<%=MyAd.GetAdvertisement("/banners/adrot.txt")%>

TypeLibrary-Deklaration

TypeLibrary (Typbibliothek) ist ein Container, der DLL-Dateien enthält, die COM-Objekten entsprechen. Durch das Einfügen eines Aufrufs von TypeLibrary in Global.asa können Sie auf die Konstanten des COM-Objekts zugreifen und Ihr ASP-Code kann Fehler besser melden. Wenn die Anwendungen Ihrer Site auf COM-Objekten basieren, deren Datentypen in einer Typbibliothek deklariert wurden, können Sie die Typbibliothek in Global.asa deklarieren.

Syntax:

<!--METADATA TYPE="TypeLib"
file="filename"
uuid="typelibraryuuid"
version="versionnumber"
lcid="localeid"
-->

Parameter Beschreibung

file Gibt den absoluten Pfad zur Typbibliothek an. Parameterdatei oder UUID, beide sind unverzichtbar.

uuid gibt den eindeutigen Bezeichner für die Typbibliothek an. Parameterdatei oder UUID, beide sind unverzichtbar.

Version Optional. Wird zur Auswahl der Version verwendet. Wenn die angegebene Version nicht gefunden wird, wird die nächstgelegene Version verwendet.

lcid Optional. Der für die Typbibliothek verwendete Gebietsschemabezeichner.

Fehlerwert

Der Server gibt eine der folgenden Fehlermeldungen zurück:

错误        代码        描述

ASP        0222        Invalid type library specification    

ASP        0223        Type library not found    

ASP        0224        Type library cannot be loaded    

ASP        0225        Type library cannot be wrapped    

注释:METADATA 标签可位于 Global.asa 文件中的任何位置(在 3f1c4e4b6b16bbbd69b2ee476dc4f83a 标签的内外均可)。不过,我们还是推荐将 METADATA 标签放置于 Global.asa 文件的顶部。

限定

关于可以在 Global.asa 文件中引用的内容的限定:

你无法显示 Global.asa 文件中的文本。此文件无法显示信息。

你只能在 Application_OnStart 和 Application_OnEnd 子例程中使用 Server 和 Application 对象。在 Session_OnEnd 子例程中,你可以使用 Server、Application 和 Session 对象。在 Session_OnStart 子例程中,你可使用任何内建的对象。

如何使用子例程

Global.asa 常用于对变量进行初始化。

下面的例子展示如何检测访问者首次到达站点的确切时间。时间存储在名为 "started" 的 Session 对象中,并且 "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 中包含函数。

在下面的例子中,当 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" 加 1。

每当 Session_OnEnd 子例程被触发时,此子例程就会从变量 "visitors" 减 1。

Global.asa 文件:

<script language="vbscript" runat="server">
Sub Application_OnStart
Application("visitors")=0
End Sub
Sub Session_OnStartApplication.LockApplication("visitors")=Application("visitors")+1Application.UnLockEnd SubSub Session_OnEndApplication.LockApplication("visitors")=Application("visitors")-1Application.UnLockEnd Sub</script>
此 ASP 文件会显示当

前用户的数目:

<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%> online now!</p>
</body>
</html>

【相关推荐】

ASP免费视频教程

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Datei Global.asa in ASP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn