فایل Global.asa ASP
- صفحه قبلی ASP #include
- صفحه بعدی ایمیل 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>
- صفحه قبلی ASP #include
- صفحه بعدی ایمیل ASP