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>