فایل Global.asa ASP

فایل Global.asa یک فایل اختیاری است که می‌تواند شامل تعریف اشیاء، متغیرها و روش‌هایی باشد که توسط هر صفحه برنامه ASP دسترسی دارند. تمام اسکریپت‌های معتبر مرورگر می‌توانند در Global.asa استفاده شوند.

فایل Global.asa

فایل Global.asa یک فایل اختیاری است که می‌تواند شامل تعریف اشیاء، متغیرها و روش‌هایی باشد که توسط هر صفحه برنامه ASP دسترسی دارند. تمام اسکریپت‌های معتبر مرورگر می‌توانند در Global.asa استفاده شوند.

فایل Global.asa می‌تواند شامل موارد زیر باشد:

  • رویدادهای Application
  • رویدادهای Session
  • برچسب <object> تعریف شده
  • اظهار TypeLibrary
  • دستور #include

توضیحات:فایل Global.asa باید در پوشه ریشه برنامه ASP قرار گیرد و هر برنامه تنها می‌تواند یک فایل Global.asa داشته باشد.

رویدادهای Global.asa

در Global.asa، می‌توانیم به application و session object بگوییم که در زمان شروع و پایان چه کاری انجام دهند. کد‌های انجام این کار در عملگرهای رویداد قرار می‌گیرند. فایل Global.asa می‌تواند شامل چهار نوع رویداد باشد:

Application_OnStart - این رویداد در زمانی که اولین کاربر از صفحه اول برنامه ASP استفاده می‌کند رخ می‌دهد. این رویداد در زمانی که سرور وب دوباره راه‌اندازی می‌شود یا فایل Global.asa ویرایش می‌شود رخ می‌دهد. رویداد "Session_OnStart" بلافاصله پس از این رویداد رخ می‌دهد.

Session_OnStart - این رویداد در هر زمانی که کاربر اولین صفحه خود را در برنامه ASP درخواست می‌کند رخ می‌دهد.

Session_OnEnd - این رویداد در هر زمانی که کاربر session خود را پایان می‌دهد رخ می‌دهد. در زمان مشخصی (رویداد پیش‌فرض 20 دقیقه) اگر هیچ صفحه‌ای درخواست نشود، session پایان می‌یابد.

Application_OnEnd - این رویداد پس از پایان session آخرین کاربر رخ می‌دهد. در شرایط معمول، این رویداد در زمانی که سرور وب متوقف می‌شود رخ می‌دهد. این زیربرنامه برای پاک کردن تنظیمات پس از توقف برنامه استفاده می‌شود، مانند حذف ورودی‌ها یا نوشتن اطلاعات به یک فایل متنی.

فایل Global.asa ممکن است به این شکل باشد:

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

توضیحات:به دلیل اینکه نمی‌توان از جداکننده اسکریپت ASP (<% و %>) در فایل Global.asa برای وارد کردن اسکریپت استفاده کرد، باید از عنصر <script> HTML استفاده کرد.

برچسب <object> تعریف شده

می‌توان با استفاده از برچسب <object> در فایل Global.asa شیء‌هایی با محدوده session یا application ایجاد کرد.

توضیحات:برچسب <object> باید خارج از برچسب <script> قرار گیرد.

نحوه استفاده:

<object runat="server" scope="scope" id="id"
{progid="progID"|classid="classID"}>
....
</object>
پارامتر توضیحات
scope محدد کردن محدوده شیء (Session یا Application).
id برای تعیین یک شناسه منحصر به فرد برای یک شیء.
ProgID

شناسه مرتبط با ClassID. فرمت ProgID به صورت: [Vendor.]Component[.Version] است.

ProgID یا ClassID باید مشخص شود.

ClassID

برای تعیین یک شناسه منحصر به فرد برای یک شیء COM.

ProgID یا ClassID باید مشخص شود.

نمونه

نمونه اول یک شیء به نام "MyAd" با استفاده از پارامتر ProgID به عنوان شیء دامنه session ایجاد می‌کند:

<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
</object>

نمونه دوم یک شیء به نام "MyConnection" با استفاده از پارامتر ClassID ایجاد می‌کند:

<object runat="server" scope="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object>

این اشیاء که در این فایل Global.asa مشخص شده‌اند، می‌توانند توسط هر اسکریپت در برنامه استفاده شوند.

GLOBAL.ASA:

<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
</object>

می‌توانید این شیء "MyAd" را از هر صفحه‌ای از برنامه ASP به کار ببرید:

یک فایل .ASP:

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

اظهار TypeLibrary

TypeLibrary (کتابخانه نوع) یک مخزن است که فایل‌های DLL مربوط به اشیاء COM را در خود جای داده است. با افزودن فراخوانی TypeLibrary به Global.asa، می‌توان به متغیرهای ثابت اشیاء COM دسترسی داشت و کد ASP نیز می‌تواند خطاها را بهتر گزارش دهد. اگر برنامه وب‌سایت شما از اشیاء COM که در کتابخانه نوع به عنوان نوع داده‌ها مشخص شده‌اند، استفاده می‌کند، می‌توانید TypeLibrary را در Global.asa خود مشخص کنید.

نحوه استفاده:

<!--METADATA TYPE="TypeLib"
file="filename"
uuid="typelibraryuuid"
version="versionnumber"
lcid="localeid"
-->
پارامتر توضیحات
file مسیر کامل به کتابخانه نوع اشاره دارد. پارامتر file یا uuid، هر دو ضروری هستند.
uuid شناسه منحصر به فردی برای کتابخانه نوع را تعیین می‌کند. پارامتر file یا uuid، هر دو ضروری هستند.
version اختیاری. برای انتخاب نسخه استفاده می‌شود. اگر نسخه مشخصی پیدا نشد، نسخه نزدیک‌تر استفاده می‌شود.
lcid اختیاری. شناسه منطقه‌ای برای کتابخانه نوع.

مقدار خطا

سرور یکی از پیام‌های خطای زیر را برمی‌گرداند:

اشتباه کد توضیحات
ASP 0222 محدودیت نوع کتابخانه نوع
ASP 0223 کتابخانه‌ی نوع پیدا نشد
ASP 0224 کتابخانه‌ی نوع نمی‌تواند بارگذاری شود
ASP 0225 کتابخانه‌ی نوع نمی‌تواند بسته شود

توضیحات:برچسب METADATA می‌تواند در هر جایی از فایل Global.asa قرار گیرد (در داخل و خارج از برچسب <script> نیز قابل استفاده است). با این حال، ما توصیه می‌کنیم که برچسب METADATA در بالای فایل Global.asa قرار گیرد.

محدودیت‌ها

محدودیت‌های مرتبط با محتوایی که می‌توان در فایل Global.asa ارجاع داد:

شما نمی‌توانید متون موجود در فایل Global.asa را نمایش دهید. این فایل نمی‌تواند اطلاعات را نمایش دهد.

شما فقط می‌توانید در زیربرنامه‌های Application_OnStart و Application_OnEnd از اشیاء Server و Application استفاده کنید. در زیربرنامه Session_OnEnd می‌توانید از اشیاء Server، Application و Session استفاده کنید. در زیربرنامه Session_OnStart می‌توانید از هر اشیاء داخلی استفاده کنید.

چگونه از زیربرنامه‌ها استفاده کنیم

Global.asa معمولاً برای�始化 متغیرها استفاده می‌شود.

در مثال زیر، نحوه‌ی تشخیص زمان دقیق ورود بازدیدکننده به وب‌سایت نشان داده شده است. زمان در یک شیء Session به نام "started" ذخیره می‌شود و مقدار متغیر "started" می‌تواند توسط هر صفحه‌ی ASP در برنامه دسترسی داشته باشد:

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

Global.asa همچنین می‌تواند برای کنترل دسترسی به صفحه‌ها استفاده شود.

در مثال زیر، نحوه‌ی هدایت هر بازدیدکننده‌ی جدید به یک صفحه‌ی دیگر نشان داده شده است، در این مثال به صفحه‌ی "newpage.asp" هدایت می‌شود:

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

ما همچنین می‌توانیم توابع را در Global.asa شامل کنیم.

در مثال‌های زیر، هنگام شروع وب سرور، زیربرنامه Application_OnStart نیز شروع می‌شود. سپس، زیربرنامه Application_OnStart یک زیربرنامه دیگری به نام "getcustomers" را فراخوانی می‌کند. زیربرنامه "getcustomers" یک پایگاه داده را باز می‌کند و سپس یک مجموعه‌ی ثبت از جدول "customers" بازیابی می‌کند. این مجموعه‌ی ثبت به یک آرایه‌ی تخصیص داده می‌شود و بدون نیاز به جستجو در پایگاه داده، هر صفحه‌ی ASP می‌تواند به این آرایه دسترسی داشته باشد:

<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

در این مثال، ما می‌خواهیم یک فایل Global.asa ایجاد کنیم که می‌تواند تعداد بازدیدکنندگان فعلی را محاسبه کند.

Application_OnStart تنظیم می‌کند که وقتی سرور شروع به کار می‌کند، مقدار متغیر Application "visitors" برابر با 0 باشد.

هر بار که کاربر جدیدی وارد می‌شود، فرآیند Session_OnStart به متغیر "visitors" اضافه می‌کند.

هر بار که فرآیند Session_OnEnd فعال می‌شود، این فرآیند از متغیر "visitors" کم می‌کند.

فایل 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>

این فایل ASP تعداد کاربران فعلی را نمایش می‌دهد:

<html>
<head>
</head>
<body>
<p>در حال حاضر <%response.write(Application("visitors"))%> آنلاین هستند!</p>
</body>
</html>