ASP Global.asa Dosyası
- Önceki Sayfa ASP #include
- Sonraki Sayfa ASP E-posta
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>
- Önceki Sayfa ASP #include
- Sonraki Sayfa ASP E-posta