ASP Global.asa Dosyası

Global.asa dosyası, ASP uygulaması içindeki her sayfa tarafından erişilebilen nesneler, değişkenler ve yöntemlerin tanımlarını içeren bir seçmeli dosyadır.

Global.asa dosyası

Global.asa dosyası, ASP uygulaması içindeki her sayfa tarafından erişilebilen nesneler, değişkenler ve yöntemlerin tanımlarını içeren bir seçmeli dosyadır. Tüm geçerli tarayıcı betikleri Global.asa'da kullanılabilir.

Global.asa dosyası aşağıdaki içerikleri içerebilir:

  • Application olayı
  • Session olayı
  • <object> bildirimi
  • TypeLibrary tanımı
  • #include talimatı

Açıklama:Global.asa dosyası, ASP uygulama kök dizininde bulunmalı ve her uygulama sadece bir Global.asa dosyasına sahip olmalıdır.

Global.asa'daki olaylar

Global.asa'da, application ve session nesnelerinin başlangıç ve bitiş sırasında ne yapacaklarını söyleyebiliriz. Bu görevi yerine getiren kod, olay operatörüne yerleştirilir. Global.asa dosyası dört tür olay içerebilir: }}

Application_OnStart - Bu olay, ilk kullanıcı ASP uygulamasının ilk sayfasını talep ettiğinde gerçekleşir. Bu olay, web sunucusunun yeniden başlatılması veya Global.asa dosyasının düzenlenmesi sonrasında gerçekleşir. "Session_OnStart" olayı bu olaydan hemen sonra gerçekleşir.

Session_OnStart - Bu olay, yeni kullanıcı ASP uygulamasındaki ilk sayfasını talep ettiğinde gerçekleşir.

Session_OnEnd - Bu olay, kullanıcı sessionunu her zaman sonlandırdığında gerçekleşir. Belirli bir süre (varsayılan olay 20 dakika) içinde sayfa talebi yapılmadığı takdirde, session sona erecektir.

Application_OnEnd - Bu olay, son kullanıcı sessionunu sonlandırdıktan sonra gerçekleşir. Tipik bir durum, bu olayın web sunucusunun durdurulduğunda gerçekleşir. Bu alt program, uygulama durdurulduğunda ayarları temizlemek için kullanılır, örneğin kayıtları silmek veya metin dosyasına bilgi yazmak.

Global.asa dosyası şu şekilde olabilir:

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

Açıklama:Global.asa dosyasında ASP betik ayırıcıları (<% ve %>) kullanılamadığı için, HTML'nin <script> öğesini kullanmamız gerekmektedir.

<object> bildirimi

Global.asa dosyasında session veya application etkisi alanına sahip nesneler oluşturmak için <object> etiketi kullanılabilir.

Açıklama:<object> etiketi <script> etiketi dışında yer almalıdır.

Sözdizimi:

<object runat="server" scope="scope" id="id"
{progid="progID"|classid="classID"}>
....
</object>
Parametre Açıklama
kapsam Nesnenin etkisi alanını (etki alanı) (Session veya Application) ayarlayın.
id Nesneye benzersiz bir kimlik belirlenmelidir.
ProgID

ClassID ile ilişkili kimlik. ProgID formatı: [Vendor.]Component[.Version].

ProgID veya ClassID belirlenmelidir.

ClassID

COM sınıf nesnesi için benzersiz bir kimlik belirlenmelidir.

ProgID veya ClassID belirlenmelidir.

örnek

İlk örnek, "MyAd" adında ve ProgID parametresini kullanan bir session etkisi alan nesnesi oluşturur:

<object çalıştırma="server" kapsam="session" id="MyAd" progid="MSWC.AdRotator">
</object>

İkinci örnek, "MyConnection" adında ve ClassID parametresini kullanan bir örnek oluşturur:

<object çalıştırma="server" kapsam="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object>

Bu Global.asa dosyasında tanımlanan bu nesneler, uygulamanın herhangi bir betiği tarafından kullanılabilir.

GLOBAL.ASA:

<object çalıştırma="server" kapsam="session" id="MyAd" progid="MSWC.AdRotator">
</object>

Bu "MyAd" nesnesini ASP uygulamasının herhangi bir sayfasından alabilirsiniz:

Bir .ASP dosyası:

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

TypeLibrary tanımı

TypeLibrary (tip kütüphanesi) COM nesnelerine karşılık gelen DLL dosyalarını içeren bir kapaktır. Global.asa dosyasında TypeLibrary çağrısını içermek, COM nesnelerinin sabitlerini erişmek ve ASP kodunun hataları daha iyi rapor etmek için kullanılabilir. Web sitenizin uygulamaları, tür kütüphanesinde tanımlanmış veri türüne sahip COM nesnelerine bağımlısa, Global.asa dosyasında tür kütüphanesini tanımlayabilirsiniz.

Sözdizimi:

<!--METADATA TYPE="TypeLib"
file="filename"
uuid="typelibraryuuid"
version="versionnumber"
lcid="localeid"
-->
Parametre Açıklama
file Tür kütüphanesine yönlendirilen mutlak yolu belirler. Parametre file veya uuid, ikisinden biri olmalıdır.
uuid Tür kütüphanesine karşı benzersiz bir tanımlayıcıyı belirler. Parametre file veya uuid, ikisinden biri olmalıdır.
version Opsiyonel. Sürüm seçmek için kullanılır. Belirtilen sürüm bulunamazsa, en yakın sürüm kullanılır.
lcid Opsiyonel. Tür kütüphanesinin bölge tanımlayıcısı için kullanılır.

Hata değeri

Sunucu aşağıdaki hata mesajlarından biri döndürebilir:

Hata Kod Açıklama
ASP 0222 Geçersiz tür kütüphanesi tanımlaması
ASP 0223 Type library not found
ASP 0224 Type library cannot be loaded
ASP 0225 Type library cannot be wrapped

Açıklama:METADATA etiketi, Global.asa dosyasının herhangi bir yerinde olabilir (script etiketinin iç veya dışında). Ancak, METADATA etiketini Global.asa dosyasının üstüne yerleştirmeyi öneririz.

Sınırlama

Global.asa dosyasında referans verilebilecek içeriklerin sınırlamaları:

Global.asa dosyasındaki metni gösteremezsiniz. Bu dosya bilgi gösteremez.

Server ve Application nesnelerini sadece Application_OnStart ve Application_OnEnd alt programlarında kullanabilirsiniz. Session_OnEnd alt programında Server, Application ve Session nesnelerini kullanabilirsiniz. Session_OnStart alt programında ise herhangi bir yerleşik nesneyi kullanabilirsiniz.

Alt programlar nasıl kullanılır

Global.asa, genellikle değişkenleri initialize etmek için kullanılır.

Aşağıdaki örnekte, ziyaretçinin sitesine ilk kez geldiği kesin zamanını nasıl tespit edeceğinizi gösterilir. Zaman, "started" adlı Session nesnesinde saklanır ve "started" değişkeninin değeri, uygulama içindeki herhangi bir ASP sayfası tarafından erişilebilir:

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

Global.asa, sayfa erişimini kontrol etmek için de kullanılabilir.

Aşağıdaki örnekte, her yeni ziyaretçinin başka bir sayfaya yönlendirildiğini gösterilir, bu örnekte "newpage.asp" sayfasına yönlendirilir:

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

Ayrıca, Global.asa dosyasına fonksiyonlar ekleyebiliriz.

Aşağıdaki örnekte, Web sunucusu başladığında, Application_OnStart alt programı da başlar. Daha sonra, Application_OnStart alt programı "getcustomers" adlı bir alt programı çağırır. "getcustomers" alt programı bir veritabanı açar ve "customers" tablosundan bir kayıt kümesi alır. Bu kayıt kümesi bir diziye atanır ve veritabanını sorgulamadan, herhangi bir ASP sayfası bu dizine erişebilir:

<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 örneği

Bu örnekte, mevcut ziyaretçiyi hesaplayabilen bir Global.asa dosyası oluşturmak istiyoruz。

Application_OnStart, sunucunun başlangığında Application değişkeni "visitors" nın değerini 0 olarak ayarlar。

Her zaman yeni bir kullanıcı ziyaret ettiğinde, Session_OnStart alt rutini değişken "visitors" e 1 ekleyecektir。

Her zaman Session_OnEnd alt rutini tetiklendiğinde, bu alt rutin değişken "visitors" den 1 azaltacaktır。

Global.asa dosyası:

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

Bu ASP dosyası mevcut kullanıcının sayısını gösterecektir:

<html>
<head>
</head>
<body>
<p>Şu anda <%response.write(Application("visitors"))%> online!</p>
</body>
</html>