ASP Plik Global.asa
Plik Global.asa
Plik Global.asa jest plikiem opcjonalnym, który może zawierać deklaracje obiektów, zmiennych i metod, do których można uzyskać dostęp z każdej strony aplikacji ASP.
Wszystkie poprawne skrypty przeglądarki (JavaScript, VBScript, JScript, PerlScript itp.) mogą być używane w Global.asa.
Plik Global.asa może zawierać tylko następujące elementy:
- Zdarzenia aplikacyjne
- Wydarzenia sesyjne
- <obiekt> deklaracje
- Deklaracje typu Library
- dyrektywa #include
Uwaga: Plik Global.asa musi być przechowywany w katalogu głównym aplikacji ASP, a każda aplikacja może mieć tylko jeden plik Global.asa.
Wydarzenia w Global.asa
W Global.asa możesz powiedzieć aplikacji i obiektom sesji, co mają zrobić po uruchomieniu aplikacji/sesji i co zrobić po zakończeniu aplikacji/sesji. Kod do tego jest umieszczony w procedurach obsługi zdarzeń. Plik Global.asa może zawierać cztery typy zdarzeń:
Application_OnStart — występuje, gdy PIERWSZY użytkownik wywołuje pierwszą stronę w aplikacji ASP. To zdarzenie występuje po ponownym uruchomieniu serwera sieci Web lub po edycji pliku Global.asa. Zdarzenie „Session_OnStart” występuje natychmiast po tym zdarzeniu.Session_OnStart — to zdarzenie występuje KAŻDY NOWY użytkownik żąda swojej pierwszej strony w aplikacji ASP.
Session_OnEnd — to zdarzenie występuje ZA KAŻDYM razem, gdy użytkownik kończy sesję. Sesja użytkownika kończy się, gdy użytkownik nie zażądał strony przez określony czas (domyślnie jest to 20 minut).
Application_OnEnd — to zdarzenie występuje po zakończeniu sesji przez OSTATNIEGO użytkownika. Zwykle to zdarzenie występuje, gdy serwer sieci Web zostaje zatrzymany. Ta procedura służy do czyszczenia ustawień po zatrzymaniu aplikacji, takich jak usuwanie rekordów lub zapisywanie informacji w plikach tekstowych.
Plik Global.asa może wyglądać mniej więcej tak:
<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>
Uwaga: Ponieważ nie możemy używać ograniczników skryptów ASP (<% i %>) do wstawiania skryptów do pliku Global.asa, umieszczamy podprogramy wewnątrz elementu HTML <script>.
<obiekt> Deklaracje
Możliwe jest tworzenie obiektów o zasięgu sesji lub aplikacji w Global.asa za pomocą znacznika <object>.
Uwaga: Znacznik <object> powinien znajdować się poza znacznikiem <script>!
Składnia
<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. |
Przykłady
Pierwszy przykład tworzy obiekt o zasięgu sesji o nazwie „MyAd” za pomocą parametru ProgID:
<object runat="server" scope="session" id="MyAd"
progid="MSWC.AdRotator">
</object>
Drugi przykład tworzy obiekt o zasięgu aplikacji o nazwie „MyConnection” za pomocą parametru ClassID:
<object runat="server" scope="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object>
Obiekty zadeklarowane w pliku Global.asa mogą być wykorzystywane przez dowolny skrypt w aplikacji:
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")%>
Deklaracje typu Library
TypeLibrary to kontener na zawartość pliku DLL odpowiadającego obiektowi COM. Umieszczając wywołanie TypeLibrary w pliku Global.asa, można uzyskać dostęp do stałych obiektu COM, a błędy mogą być lepiej raportowane przez kod ASP. Jeśli Twoja aplikacja sieci Web opiera się na obiektach COM, które mają zadeklarowane typy danych w bibliotekach typów, możesz zadeklarować biblioteki typów w Global.asa.
Składnia
<!--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 |
Wartości błędów
Serwer może zwrócić jeden z następujących komunikatów o błędach:
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 |
Uwaga: tagi METADATA mogą pojawiać się w dowolnym miejscu pliku Global.asa (zarówno wewnątrz, jak i na zewnątrz tagów <script>). Zaleca się jednak, aby tagi METADATA pojawiały się w górnej części pliku Global.asa.
Ograniczenia
Ograniczenia dotyczące zawartości pliku Global.asa:
- Nie można wyświetlić tekstu zapisanego w pliku Global.asa. Ten plik nie może wyświetlić informacji
- W podprogramach Application_OnStart i Application_OnEnd można używać tylko obiektów Server i Application. W podprogramie Session_OnEnd można używać obiektów Server, Application i Session. W podprogramie Session_OnStart możesz użyć dowolnego wbudowanego obiektu
Jak korzystać z podprogramów
Global.asa jest często używany do inicjowania zmiennych.
Poniższy przykład pokazuje, jak wykryć dokładny czas, kiedy odwiedzający po raz pierwszy pojawia się w witrynie sieci Web. Czas jest przechowywany w zmiennej Session o nazwie „started”, a dostęp do wartości zmiennej „started” można uzyskać z dowolnej strony ASP w aplikacji:
<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end sub
</script>
Global.asa może być również używany do kontrolowania dostępu do strony.
Poniższy przykład pokazuje, jak przekierować każdego nowego odwiedzającego na inną stronę, w tym przypadku na stronę o nazwie „newpage.asp”:
<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
</script>
Możesz też dołączyć funkcje do pliku Global.asa.
W poniższym przykładzie podprogram Application_OnStart występuje podczas uruchamiania serwera sieci Web. Następnie podprogram Application_OnStart wywołuje inny podprogram o nazwie „getcustomers”. Podprogram „getcustomers” otwiera bazę danych i pobiera zestaw rekordów z tabeli „customers”. Zestaw rekordów jest przypisany do tablicy, do której można uzyskać dostęp z dowolnej strony ASP bez odpytywania bazy danych:
<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>
Przykład Global.asa
W tym przykładzie utworzymy plik Global.asa, który zlicza liczbę obecnych odwiedzających.
- Application_OnStart ustawia zmienną aplikacji „visitors” na 0 podczas uruchamiania serwera
- Podprogram Session_OnStart dodaje jeden do zmiennej „visitors” za każdym razem, gdy pojawia się nowy gość
- Podprogram Session_OnEnd odejmuje jeden od „odwiedzających” za każdym razem, gdy ten podprogram jest uruchamiany
Plik Global.asa:
<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>
Aby wyświetlić liczbę aktualnych odwiedzających w pliku ASP:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%>
online now!</p>
</body>
</html>