ASP Global.asa dosyası
Global.asa dosyası
Global.asa dosyası, bir ASP uygulamasındaki her sayfa tarafından erişilebilen nesnelerin, değişkenlerin ve yöntemlerin bildirimlerini içerebilen isteğe bağlı bir dosyadır.
Tüm geçerli tarayıcı komut dosyaları (JavaScript, VBScript, JScript, PerlScript, vb.) Global.asa içinde kullanılabilir.
Global.asa dosyası yalnızca aşağıdakileri içerebilir:
- Uygulama olayları
- Oturum etkinlikleri
- <nesne> bildirimleri
- TypeLibrary bildirimleri
- #include yönergesi
Not: Global.asa dosyası, ASP uygulamasının kök dizininde saklanmalıdır ve her uygulamada yalnızca bir Global.asa dosyası olabilir.
Global.asa'daki Etkinlikler
Global.asa'da uygulama ve oturum nesnelerine uygulama/oturum başladığında ne yapacağını ve uygulama/oturum bittiğinde ne yapacağını söyleyebilirsiniz. Bunun için kod olay işleyicilere yerleştirilir. Global.asa dosyası dört tür olay içerebilir:
Application_OnStart - İLK kullanıcı bir ASP uygulamasında ilk sayfayı çağırdığında gerçekleşir. Bu olay, Web sunucusu yeniden başlatıldıktan veya Global.asa dosyası düzenlendikten sonra oluşur. "Session_OnStart" olayı, bu olaydan hemen sonra gerçekleşir.Session_OnStart - Bu olay HER YENİ kullanıcı ASP uygulamasındaki ilk sayfasını istediğinde gerçekleşir.
Session_OnEnd - Bu olay, bir kullanıcı bir oturumu her sonlandırdığında gerçekleşir. Kullanıcı oturumu, belirli bir süre boyunca kullanıcı tarafından bir sayfa istenmediğinde sona erer (varsayılan olarak bu süre 20 dakikadır).
Application_OnEnd - Bu olay, SON kullanıcı oturumu sonlandırdıktan sonra gerçekleşir. Genellikle bu olay, bir Web sunucusu durduğunda meydana gelir. Bu prosedür, Uygulama durduktan sonra kayıtları silmek veya metin dosyalarına bilgi yazmak gibi ayarları temizlemek için kullanılır.
Global.asa dosyası şöyle görünebilir:
<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>
Not: Global.asa dosyasına komut dosyaları eklemek için ASP komut dosyası sınırlayıcılarını (<% ve %>) kullanamadığımız için, alt programları bir HTML <script> öğesinin içine koyarız.
<nesne> Bildirimler
<object> etiketini kullanarak Global.asa'da oturum veya uygulama kapsamına sahip nesneler oluşturmak mümkündür.
Not: <object> etiketi, <script> etiketinin dışında olmalıdır!
Sözdizimi
<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. |
Örnekler
İlk örnek, ProgID parametresini kullanarak "MyAd" adlı bir oturum kapsamı nesnesi oluşturur:
<object runat="server" scope="session" id="MyAd"
progid="MSWC.AdRotator">
</object>
İkinci örnek, ClassID parametresini kullanarak "MyConnection" adlı bir uygulama kapsamı nesnesi oluşturur:
<object runat="server" scope="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object>
Global.asa dosyasında bildirilen nesneler, uygulamadaki herhangi bir komut dosyası tarafından kullanılabilir:
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")%>
TipKütüphane Bildirimleri
TypeLibrary, bir COM nesnesine karşılık gelen bir DLL dosyasının içeriği için bir kapsayıcıdır. Global.asa dosyasına TypeLibrary çağrısı eklenerek, COM nesnesinin sabitlerine erişilebilir ve hatalar ASP koduyla daha iyi rapor edilebilir. Web uygulamanız, tür kitaplıklarında veri türleri bildiren COM nesnelerine dayanıyorsa, tür kitaplıklarını Global.asa'da bildirebilirsiniz.
Sözdizimi
<!--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 |
Hata Değerleri
Sunucu, aşağıdaki hata mesajlarından birini döndürebilir:
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 |
Not: METADATA etiketleri Global.asa dosyasında herhangi bir yerde görünebilir (hem <script> etiketlerinin içinde hem de dışında). Ancak, METADATA etiketlerinin Global.asa dosyasının üst kısmına yakın bir yerde görünmesi önerilir.
Kısıtlamalar
Global.asa dosyasına neleri ekleyebileceğinizle ilgili kısıtlamalar:
- Global.asa dosyasında yazılmış metni görüntüleyemezsiniz. Bu dosya bilgileri görüntüleyemiyor
- Application_OnStart ve Application_OnEnd alt programlarında yalnızca Sunucu ve Uygulama nesnelerini kullanabilirsiniz. Session_OnEnd alt yordamında Sunucu, Uygulama ve Oturum nesnelerini kullanabilirsiniz. Session_OnStart alt programında herhangi bir yerleşik nesneyi kullanabilirsiniz.
Alt Programlar nasıl kullanılır
Global.asa genellikle değişkenleri başlatmak için kullanılır.
Aşağıdaki örnek, bir ziyaretçinin bir Web sitesine ilk geldiği zamanın tam olarak nasıl tespit edileceğini gösterir. Zaman, "started" adlı bir Oturum değişkeninde saklanır ve "started" değişkeninin değerine uygulamadaki herhangi bir ASP sayfası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 örnek, her yeni ziyaretçinin başka bir sayfaya, bu durumda "newpage.asp" adlı bir sayfaya nasıl yönlendirileceğini gösterir:
<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
</script>
Ve Global.asa dosyasına işlevleri dahil edebilirsiniz.
Aşağıdaki örnekte, Application_OnStart alt yordamı, Web sunucusu başladığında gerçekleşir. Ardından Application_OnStart alt yordamı "getcustomers" adlı başka bir alt yordamı çağırır. "getcustomers" alt programı bir veritabanı açar ve "müşteriler" tablosundan bir kayıt kümesi alır. Kayıt kümesi, veritabanını sorgulamadan herhangi bir ASP sayfasından erişilebileceği bir diziye atanır:
<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çi sayısını sayan bir Global.asa dosyası oluşturacağız.
- Application_OnStart, sunucu başladığında "ziyaretçiler" Uygulama değişkenini 0'a ayarlar
- Session_OnStart alt yordamı, her yeni ziyaretçi geldiğinde "ziyaretçiler" değişkenine bir tane ekler.
- Session_OnEnd alt yordamı, bu alt yordam her tetiklendiğinde "ziyaretçilerden" birini çıkarı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>
Bir ASP dosyasındaki mevcut ziyaretçi sayısını görüntülemek için:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%>
online now!</p>
</body>
</html>