ASP Het Global.asa-bestand


Het Global.asa-bestand

Het bestand Global.asa is een optioneel bestand dat declaraties van objecten, variabelen en methoden kan bevatten die toegankelijk zijn voor elke pagina in een ASP-toepassing.

Alle geldige browserscripts (JavaScript, VBScript, JScript, PerlScript, etc.) kunnen binnen Global.asa worden gebruikt.

Het bestand Global.asa kan alleen het volgende bevatten:

  • Toepassingsgebeurtenissen
  • Sessie-evenementen
  • <object> declaraties
  • TypeBibliotheekaangiften
  • de #include-richtlijn

Opmerking: het Global.asa-bestand moet worden opgeslagen in de hoofdmap van de ASP-toepassing en elke toepassing kan slechts één Global.asa-bestand hebben.


Evenementen in Global.asa

In Global.asa kunt u de applicatie- en sessie-objecten vertellen wat ze moeten doen wanneer de applicatie/sessie start en wat ze moeten doen wanneer de applicatie/sessie eindigt. De code hiervoor wordt in event handlers geplaatst. Het bestand Global.asa kan vier soorten gebeurtenissen bevatten:

Application_OnStart - Treedt op wanneer de EERSTE gebruiker de eerste pagina in een ASP-toepassing oproept. Deze gebeurtenis vindt plaats nadat de webserver opnieuw is opgestart of nadat het bestand Global.asa is bewerkt. De gebeurtenis "Session_OnStart" vindt onmiddellijk na deze gebeurtenis plaats.

Session_OnStart - Deze gebeurtenis vindt ELKE keer plaats als een NIEUWE gebruiker zijn of haar eerste pagina in de ASP-toepassing opvraagt.

Session_OnEnd - Deze gebeurtenis vindt ELKE keer plaats als een gebruiker een sessie beëindigt. Een gebruikerssessie eindigt nadat een pagina gedurende een bepaalde tijd niet door de gebruiker is opgevraagd (standaard is dit 20 minuten).

Application_OnEnd - Deze gebeurtenis vindt plaats nadat de LAATSTE gebruiker de sessie heeft beëindigd. Meestal treedt deze gebeurtenis op wanneer een webserver stopt. Deze procedure wordt gebruikt om instellingen op te schonen nadat de toepassing is gestopt, zoals het verwijderen van records of het schrijven van informatie naar tekstbestanden.

Een Global.asa-bestand kan er ongeveer zo uitzien:

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

Opmerking: omdat we de ASP-scriptscheidingstekens (<% en %>) niet kunnen gebruiken om scripts in het Global.asa-bestand in te voegen, plaatsen we subroutines in een HTML <script>-element.



<object> Verklaringen

Het is mogelijk om objecten met een sessie- of toepassingsbereik in Global.asa te maken met behulp van de <object>-tag.

Opmerking: de <object>-tag moet buiten de <script>-tag staan!

Syntaxis

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

Voorbeelden

In het eerste voorbeeld wordt een object met een sessiebereik gemaakt met de naam "MyAd" met behulp van de ProgID-parameter:

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

In het tweede voorbeeld wordt een object van het toepassingsbereik gemaakt met de naam "MyConnection" met behulp van de ClassID-parameter:

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

De objecten die in het Global.asa-bestand zijn gedeclareerd, kunnen door elk script in de toepassing worden gebruikt:

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")%>

Type Bibliotheekverklaringen

Een TypeLibrary is een container voor de inhoud van een DLL-bestand dat overeenkomt met een COM-object. Door een aanroep van de TypeLibrary in het bestand Global.asa op te nemen, zijn de constanten van het COM-object toegankelijk en kunnen fouten beter worden gemeld door de ASP-code. Als uw webtoepassing afhankelijk is van COM-objecten die gegevenstypen hebben gedeclareerd in typebibliotheken, kunt u de typebibliotheken declareren in Global.asa.

Syntaxis

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

Foutwaarden

De server kan een van de volgende foutmeldingen retourneren:

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

Opmerking: METADATA-tags kunnen overal in het Global.asa-bestand voorkomen (zowel binnen als buiten <script>-tags). Het wordt echter aanbevolen dat METADATA-tags bovenaan het Global.asa-bestand verschijnen.


Beperkingen

Beperkingen op wat u in het Global.asa-bestand kunt opnemen:

  • U kunt geen tekst weergeven die is geschreven in het Global.asa-bestand. Dit bestand kan geen informatie weergeven
  • U kunt alleen Server- en Application-objecten gebruiken in de subroutines Application_OnStart en Application_OnEnd. In de Session_OnEnd-subroutine kunt u Server-, Application- en Session-objecten gebruiken. In de Session_OnStart subroutine kunt u elk ingebouwd object gebruiken

Hoe de subroutines te gebruiken

Global.asa wordt vaak gebruikt om variabelen te initialiseren. 

Het onderstaande voorbeeld laat zien hoe u het exacte tijdstip kunt detecteren waarop een bezoeker voor het eerst op een website aankomt. De tijd wordt opgeslagen in een Session-variabele met de naam "started", en de waarde van de "started"-variabele is toegankelijk vanaf elke ASP-pagina in de toepassing:

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

Global.asa kan ook worden gebruikt om paginatoegang te regelen.

Het onderstaande voorbeeld laat zien hoe u elke nieuwe bezoeker naar een andere pagina kunt omleiden, in dit geval naar een pagina met de naam "newpage.asp":

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

En u kunt functies opnemen in het bestand Global.asa.

In het onderstaande voorbeeld treedt de Application_OnStart subroutine op wanneer de webserver start. Vervolgens roept de Application_OnStart-subroutine een andere subroutine aan met de naam "getcustomers". De subroutine "getcustomers" opent een database en haalt een recordset op uit de tabel "customers". De recordset wordt toegewezen aan een array, waar deze vanaf elke ASP-pagina kan worden geopend zonder de database te raadplegen:

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

In dit voorbeeld zullen we een Global.asa-bestand maken dat het aantal huidige bezoekers telt.

  • De Application_OnStart stelt de toepassingsvariabele "bezoekers" in op 0 wanneer de server start
  • De Session_OnStart subroutine voegt er een toe aan de variabele "bezoekers" elke keer dat er een nieuwe bezoeker arriveert
  • De Session_OnEnd subroutine trekt één af van "bezoekers" elke keer dat deze subroutine wordt geactiveerd

Het Global.asa-bestand:

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

Om het aantal huidige bezoekers in een ASP-bestand weer te geven:

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