ASP ملف Global.asa
ملف Global.asa
ملف Global.asa هو ملف اختياري يمكن أن يحتوي على تعريفات للكائنات والمتغيرات والطرق التي يمكن الوصول إليها بواسطة كل صفحة في تطبيق ASP.
يمكن استخدام جميع البرامج النصية الصالحة للمتصفح (JavaScript ، و VBScript ، و JScript ، و PerlScript ، وما إلى ذلك) داخل Global.asa.
يمكن أن يحتوي الملف Global.asa على ما يلي فقط:
- أحداث التطبيق
- أحداث الجلسة
- تعريفات <object>
- إقرارات TypeLibrary
- # تضمين التوجيه
ملاحظة: يجب تخزين الملف Global.asa في الدليل الجذر لتطبيق ASP ، ويمكن لكل تطبيق أن يحتوي على ملف Global.asa واحد فقط.
الأحداث في Global.asa
في Global.asa ، يمكنك إخبار كائنات التطبيق والجلسة بما يجب القيام به عند بدء التطبيق / الجلسة وما يجب القيام به عند انتهاء التطبيق / الجلسة. يتم وضع رمز هذا في معالجات الأحداث. يمكن أن يحتوي ملف Global.asa على أربعة أنواع من الأحداث:
Application_OnStart - يحدث عندما يقوم المستخدم الأول باستدعاء الصفحة الأولى في تطبيق ASP. يقع هذا الحدث بعد إعادة تشغيل خادم الويب أو بعد تحرير الملف Global.asa. يقع الحدث "Session_OnStart" مباشرة بعد هذا الحدث.Session_OnStart - يحدث هذا الحدث في كل مرة يطلب فيها مستخدم جديد الصفحة الأولى الخاصة به في تطبيق ASP.
Session_OnEnd - يحدث هذا الحدث في كل مرة ينهي فيها المستخدم جلسة. تنتهي جلسة المستخدم بعد عدم طلب المستخدم للصفحة لفترة زمنية محددة (افتراضيًا يكون هذا 20 دقيقة).
Application_OnEnd - يقع هذا الحدث بعد أن أنهى المستخدم الأخير الجلسة. عادةً ما يحدث هذا الحدث عند توقف خادم ويب. يستخدم هذا الإجراء لتنظيف الإعدادات بعد توقف التطبيق ، مثل حذف السجلات أو كتابة المعلومات إلى ملفات نصية.
يمكن أن يظهر ملف 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> الإعلانات
من الممكن إنشاء كائنات بنطاق جلسة أو تطبيق في Global.asa باستخدام علامة <object>.
ملاحظة: يجب أن تكون علامة <object> خارج علامة <script>!
بناء الجملة
<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. |
أمثلة
ينشئ المثال الأول كائنًا لنطاق جلسة يسمى "MyAd" باستخدام معلمة ProgID:
<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>
You could reference the object "MyAd" from any page in the ASP application:
SOME .ASP FILE:
<%=MyAd.GetAdvertisement("/banners/adrot.txt")%>
إعلانات TypeLibrary
TypeLibrary هي حاوية لمحتويات ملف DLL المطابق لكائن COM. من خلال تضمين استدعاء إلى TypeLibrary في ملف Global.asa ، يمكن الوصول إلى ثوابت كائن COM ، ويمكن الإبلاغ عن الأخطاء بشكل أفضل بواسطة رمز ASP. إذا كان تطبيق الويب الخاص بك يعتمد على كائنات COM التي قامت بالتصريح عن أنواع البيانات في مكتبات الأنواع ، فيمكنك إعلان مكتبات الأنواع في Global.asa.
بناء الجملة
<!--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 |
قيم الخطأ
يمكن للخادم إرجاع إحدى رسائل الخطأ التالية:
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 |
ملاحظة: يمكن أن تظهر علامات البيانات الوصفية في أي مكان في ملف Global.asa (داخل وخارج علامات <script>). ومع ذلك ، فمن المستحسن أن تظهر علامات البيانات الوصفية بالقرب من أعلى ملف Global.asa.
قيود
قيود على ما يمكنك تضمينه في ملف Global.asa:
- لا يمكنك عرض نص مكتوب في ملف Global.asa. لا يمكن لهذا الملف عرض المعلومات
- يمكنك فقط استخدام كائنات الخادم والتطبيق في الإجراءات الفرعية Application_OnStart و Application_OnEnd. في الروتين الفرعي Session_OnEnd ، يمكنك استخدام كائنات الخادم والتطبيق والجلسة. في روتين Session_OnStart يمكنك استخدام أي كائن مدمج
كيفية استخدام الإجراءات الفرعية
غالبًا ما يتم استخدام Global.asa لتهيئة المتغيرات.
يوضح المثال أدناه كيفية اكتشاف الوقت الدقيق الذي يصل فيه الزائر لأول مرة إلى موقع ويب. يتم تخزين الوقت في متغير جلسة يسمى "بدأ" ، ويمكن الوصول إلى قيمة المتغير "بدأ" من أي صفحة 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 متغير التطبيق "زوار" على 0 عند بدء تشغيل الخادم
- يضيف الروتين الفرعي Session_OnStart واحدًا إلى المتغير "الزائرون" في كل مرة يصل فيها زائر جديد
- يطرح الروتين الفرعي Session_OnEnd واحدًا من "الزوار" في كل مرة يتم فيها تشغيل هذا الروتين الفرعي
ملف 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:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%>
online now!</p>
</body>
</html>