ASP Die Global.asa-lêer
Die Global.asa-lêer
Die Global.asa-lêer is 'n opsionele lêer wat verklarings van voorwerpe, veranderlikes en metodes kan bevat wat deur elke bladsy in 'n ASP-toepassing verkry kan word.
Alle geldige blaaierskrifte (JavaScript, VBScript, JScript, PerlScript, ens.) kan binne Global.asa gebruik word.
Die Global.asa-lêer kan slegs die volgende bevat:
- Toepassingsgeleenthede
- Sessie gebeure
- <object> verklarings
- TypeLibrary verklarings
- die #insluit-instruksie
Let wel: Die Global.asa-lêer moet in die wortelgids van die ASP-toepassing gestoor word, en elke toepassing kan slegs een Global.asa-lêer hê.
Gebeure in Global.asa
In Global.asa kan jy vir die toepassing en sessie-objekte sê wat om te doen wanneer die toepassing/sessie begin en wat om te doen wanneer die toepassing/sessie eindig. Die kode hiervoor word in gebeurtenishanteerders geplaas. Die Global.asa-lêer kan vier tipes gebeurtenisse bevat:
Application_OnStart - Vind plaas wanneer die EERSTE gebruiker die eerste bladsy in 'n ASP-toepassing oproep. Hierdie gebeurtenis vind plaas nadat die webbediener herbegin is of nadat die Global.asa-lêer geredigeer is. Die "Session_OnStart" gebeurtenis vind plaas onmiddellik na hierdie gebeurtenis.Session_OnStart - Hierdie gebeurtenis vind plaas ELKE keer as 'n NUWE gebruiker sy of haar eerste bladsy in die ASP-toepassing versoek.
Session_OnEnd - Hierdie gebeurtenis vind plaas ELKE keer as 'n gebruiker 'n sessie beëindig. 'n Gebruikersessie eindig nadat 'n bladsy vir 'n bepaalde tyd nie deur die gebruiker aangevra is nie (by verstek is dit 20 minute).
Application_OnEnd - Hierdie gebeurtenis vind plaas nadat die LAASTE gebruiker die sessie beëindig het. Tipies vind hierdie gebeurtenis plaas wanneer 'n webbediener stop. Hierdie prosedure word gebruik om instellings skoon te maak nadat die toepassing gestop het, soos om rekords uit te vee of inligting na tekslêers te skryf.
'n Global.asa-lêer kan iets soos volg lyk:
<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>
Let wel: Omdat ons nie die ASP script delimiters (<% en %>) kan gebruik om skrifte in die Global.asa lêer in te voeg nie, plaas ons subroetines binne 'n HTML <script> element.
<object> Verklarings
Dit is moontlik om voorwerpe met sessie- of toepassingsomvang in Global.asa te skep deur die <object>-merker te gebruik.
Let wel: Die <object> tag moet buite die <script> tag wees!
Sintaksis
<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. |
Voorbeelde
Die eerste voorbeeld skep 'n objek van sessie-omvang genaamd "MyAd" deur die ProgID-parameter te gebruik:
<object runat="server" scope="session" id="MyAd"
progid="MSWC.AdRotator">
</object>
Die tweede voorbeeld skep 'n objek van toepassingsomvang genaamd "MyConnection" deur die ClassID-parameter te gebruik:
<object runat="server" scope="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object>
Die voorwerpe wat in die Global.asa-lêer verklaar word, kan deur enige skrif in die toepassing gebruik word:
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")%>
Tipe Biblioteekverklarings
'n TypeLibrary is 'n houer vir die inhoud van 'n DLL-lêer wat ooreenstem met 'n COM-voorwerp. Deur 'n oproep na die TypeLibrary in die Global.asa-lêer in te sluit, kan die konstantes van die COM-voorwerp verkry word, en foute kan beter deur die ASP-kode gerapporteer word. As jou webtoepassing staatmaak op COM-objekte wat datatipes in tipe biblioteke verklaar het, kan jy die tipe biblioteke in Global.asa verklaar.
Sintaksis
<!--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 |
Foutwaardes
Die bediener kan een van die volgende foutboodskappe terugstuur:
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 |
Let wel: METADATA-merkers kan enige plek in die Global.asa-lêer verskyn (beide binne en buite <script>-merkers). Dit word egter aanbeveel dat METADATA-merkers naby die bokant van die Global.asa-lêer verskyn.
Beperkings
Beperkings op wat jy by die Global.asa-lêer kan insluit:
- Jy kan nie teks vertoon wat in die Global.asa-lêer geskryf is nie. Hierdie lêer kan nie inligting vertoon nie
- Jy kan slegs Bediener- en Toepassingsobjekte in die Application_OnStart en Application_OnEnd subroetines gebruik. In die Session_OnEnd-subroetine kan jy Bediener-, Toepassings- en Sessie-objekte gebruik. In die Session_OnStart-subroetine kan jy enige ingeboude voorwerp gebruik
Hoe om die subroetines te gebruik
Global.asa word dikwels gebruik om veranderlikes te inisialiseer.
Die voorbeeld hieronder wys hoe om die presiese tyd op te spoor wat 'n besoeker die eerste keer op 'n webwerf aankom. Die tyd word gestoor in 'n Sessie-veranderlike genaamd "begin", en die waarde van die "begin" veranderlike kan verkry word vanaf enige ASP-bladsy in die toepassing:
<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end sub
</script>
Global.asa kan ook gebruik word om bladsytoegang te beheer.
Die voorbeeld hieronder wys hoe om elke nuwe besoeker na 'n ander bladsy te herlei, in hierdie geval na 'n bladsy genaamd "newpage.asp":
<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
</script>
En jy kan funksies in die Global.asa-lêer insluit.
In die voorbeeld hieronder vind die Application_OnStart-subroetine plaas wanneer die webbediener begin. Dan roep die Application_OnStart-subroetine 'n ander subroetine genaamd "getcustomers". Die "getcustomers"-subroetine maak 'n databasis oop en haal 'n rekordstel van die "customers"-tabel af. Die rekordstel word aan 'n skikking toegewys, waar dit vanaf enige ASP-bladsy verkry kan word sonder om die databasis navraag te doen:
<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 hierdie voorbeeld sal ons 'n Global.asa-lêer skep wat die aantal huidige besoekers tel.
- Die Application_OnStart stel die toepassingsveranderlike "besoekers" op 0 wanneer die bediener begin
- Die Session_OnStart-subroetine voeg een by die veranderlike "besoekers" elke keer as 'n nuwe besoeker opdaag
- Die Session_OnEnd-subroetine trek een van "besoekers" af elke keer as hierdie subroetine geaktiveer word
Die Global.asa-lêer:
<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 die aantal huidige besoekers in 'n ASP-lêer te vertoon:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%>
online now!</p>
</body>
</html>