ASP Die Global.asa-Datei


Die Global.asa-Datei

Die Datei Global.asa ist eine optionale Datei, die Deklarationen von Objekten, Variablen und Methoden enthalten kann, auf die von jeder Seite in einer ASP-Anwendung zugegriffen werden kann.

Alle gültigen Browserskripte (JavaScript, VBScript, JScript, PerlScript usw.) können innerhalb von Global.asa verwendet werden.

Die Datei Global.asa darf nur Folgendes enthalten:

  • Bewerbungsveranstaltungen
  • Sitzungsereignisse
  • <Objekt>-Deklarationen
  • TypeLibrary-Deklarationen
  • die #include-Direktive

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


Ereignisse in Global.asa

In Global.asa können Sie den Anwendungs- und Sitzungsobjekten mitteilen, was zu tun ist, wenn die Anwendung/Sitzung beginnt, und was zu tun ist, wenn die Anwendung/Sitzung endet. Der Code dafür wird in Event-Handlern platziert. Die Datei Global.asa kann vier Arten von Ereignissen enthalten:

Application_OnStart - Tritt auf, wenn der ERSTE Benutzer die erste Seite in einer ASP-Anwendung aufruft. Dieses Ereignis tritt auf, nachdem der Webserver neu gestartet oder die Datei Global.asa bearbeitet wurde. Unmittelbar nach diesem Ereignis tritt das Ereignis „Session_OnStart“ auf.

Session_OnStart - Dieses Ereignis tritt JEDES Mal auf, wenn ein NEUER Benutzer seine erste Seite in der ASP-Anwendung anfordert.

Session_OnEnd – Dieses Ereignis tritt JEDES Mal auf, wenn ein Benutzer eine Sitzung beendet. Eine Benutzersitzung endet, nachdem der Benutzer für eine bestimmte Zeit (standardmäßig 20 Minuten) keine Seite angefordert hat.

Application_OnEnd – Dieses Ereignis tritt auf, nachdem der LETZTE Benutzer die Sitzung beendet hat. Dieses Ereignis tritt normalerweise auf, wenn ein Webserver beendet wird. Dieses Verfahren wird verwendet, um Einstellungen zu bereinigen, nachdem die Anwendung beendet wurde, wie z. B. Datensätze löschen oder Informationen in Textdateien schreiben.

Eine Global.asa-Datei könnte etwa so aussehen:

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

Hinweis: Da wir die ASP-Skripttrennzeichen (<% und %>) nicht verwenden können, um Skripts in die Datei Global.asa einzufügen, fügen wir Subroutinen in ein HTML-<script>-Element ein.



<Objekt> Deklarationen

Es ist möglich, Objekte mit Sitzungs- oder Anwendungsbereich in Global.asa zu erstellen, indem Sie das <object>-Tag verwenden.

Hinweis: Das <object>-Tag sollte außerhalb des <script>-Tags stehen!

Syntax

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

Parameter Description
scope Sets the scope of the object (either Session or Application)
id Specifies a unique id for the object
ProgID An id associated with a class id. The format for ProgID is [Vendor.]Component[.Version]

Either ProgID or ClassID must be specified.

ClassID Specifies a unique id for a COM class object.

Either ProgID or ClassID must be specified.

Beispiele

Das erste Beispiel erstellt ein Objekt mit Sitzungsbereich namens „MyAd“ mithilfe des ProgID-Parameters:

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

Das zweite Beispiel erstellt ein Objekt des Anwendungsbereichs mit dem Namen „MyConnection“ mithilfe des ClassID-Parameters:

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

Die in der Datei Global.asa 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>

You could reference the object "MyAd" from any page in the ASP application:

SOME .ASP FILE:

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

TypeLibrary-Deklarationen

Eine TypeLibrary ist ein Container für den Inhalt einer DLL-Datei, die einem COM-Objekt entspricht. Durch Einfügen eines Aufrufs der TypeLibrary in die Datei Global.asa kann auf die Konstanten des COM-Objekts zugegriffen werden, und Fehler können vom ASP-Code besser gemeldet werden. Wenn Ihre Webanwendung auf COM-Objekten basiert, die Datentypen in Typbibliotheken deklariert haben, können Sie die Typbibliotheken in Global.asa deklarieren.

Syntax

<!--METADATA TYPE="TypeLib"
file="filename" uuid="id" version="number" lcid="localeid"
-->

Parameter Description
file Specifies an absolute path to a type library.

Either the file parameter or the uuid parameter is required

uuid Specifies a unique identifier for the type library.

Either the file parameter or the uuid parameter is required

version Optional. Used for selecting version. If the requested version is not found, then the most recent version is used
lcid Optional. The locale identifier to be used for the type library

Fehlerwerte

Der Server kann eine der folgenden Fehlermeldungen zurückgeben:

Error Code Description
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

Hinweis: METADATA-Tags können überall in der Datei Global.asa erscheinen (sowohl innerhalb als auch außerhalb von <script>-Tags). Es wird jedoch empfohlen, dass METADATA-Tags am Anfang der Datei Global.asa angezeigt werden.


Beschränkungen

Einschränkungen hinsichtlich dessen, was Sie in die Datei Global.asa aufnehmen können:

  • Sie können keinen Text anzeigen, der in die Datei Global.asa geschrieben wurde. Diese Datei kann keine Informationen anzeigen
  • Sie können Server- und Anwendungsobjekte nur in den Subroutinen Application_OnStart und Application_OnEnd verwenden. In der Subroutine Session_OnEnd können Sie Server-, Anwendungs- und Sitzungsobjekte verwenden. In der Subroutine Session_OnStart können Sie jedes eingebaute Objekt verwenden

Verwendung der Subroutinen

Global.asa wird häufig zum Initialisieren von Variablen verwendet. 

Das folgende Beispiel zeigt, wie man den genauen Zeitpunkt erkennt, zu dem ein Besucher zum ersten Mal auf einer Website ankommt. Die Uhrzeit wird in einer Sitzungsvariablen namens „started“ gespeichert, und auf den Wert der „started“-Variablen kann von jeder ASP-Seite in der Anwendung aus zugegriffen werden:

<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end sub
</script>

Global.asa kann auch verwendet werden, um den Seitenzugriff zu steuern.

Das folgende Beispiel zeigt, wie Sie jeden neuen Besucher auf eine andere Seite umleiten, in diesem Fall auf eine Seite namens "newpage.asp":

<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
</script>

Und Sie können Funktionen in die Datei Global.asa aufnehmen.

Im Beispiel unten tritt die Subroutine Application_OnStart auf, wenn der Webserver gestartet wird. Dann ruft die Application_OnStart-Subroutine eine andere Subroutine mit dem Namen "getcustomers" auf. Die Subroutine "getcustomers" öffnet eine Datenbank und ruft einen Datensatz aus der Tabelle "customers" ab. Der Datensatz wird einem Array zugewiesen, in dem von jeder ASP-Seite aus darauf zugegriffen werden kann, ohne die Datenbank abzufragen:

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

In diesem Beispiel erstellen wir eine Global.asa-Datei, die die Anzahl der aktuellen Besucher zählt.

  • Application_OnStart setzt die Application-Variable „visitors“ auf 0, wenn der Server startet
  • Die Subroutine Session_OnStart fügt der Variablen "visitors" jedes Mal eins hinzu, wenn ein neuer Besucher ankommt
  • Die Subroutine Session_OnEnd subtrahiert jedes Mal, wenn diese Subroutine ausgelöst wird, eins von "Besuchern".

Die Global.asa-Datei:

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

So zeigen Sie die Anzahl aktueller Besucher in einer ASP-Datei an:

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