يجب على أي شخص قام بتطوير تطبيق ويب باستخدام ASP من قبل أن يعرف مدى صعوبة تصحيح أخطاء تطبيق ويب. في ASP، يكون تصحيح الأخطاء أمرًا مؤلمًا وعادةً ما يتضمن طباعة قيمة متغير باستخدام أسلوب Response.Write(). لذا اسأل نفسك: كم مرة نسيت إزالة بيانات تصحيح الأخطاء قبل نشر تطبيقك؟
لقد تغير هذا الوضع تمامًا مع ظهور مكونات .NET Framework. في .NET، يمكنك تتبع تنفيذ تطبيق ويب بأكمله باستخدام مصحح الأخطاء في Visual Studio .NET، أو باستخدام فئة التتبع في مساحة الاسم System.Web.TraceContext. يوضح هذا المقال كيفية استخدام فئة التتبع للمساعدة في عمل التصحيح الخاص بك.
باستخدام فئة التتبع
يتضمن ASP.NET فئة تتبع تساعد في تتبع تدفق معلومات التطبيق. بدلاً من استخدام كائن الاستجابة لتصحيح الأخطاء، يمكنك الآن استخدام فئة التتبع لطباعة معلومات التصحيح.
لتوضيح استخدامه، قمنا أولاً بإنشاء تطبيق ويب ASP.NET ووضع زر وعنصر تحكم ListBox على WebForm1 الافتراضي (كما هو موضح في الشكل 1). قم بتعبئة عنصر التحكم ListBox بثلاثة عناصر وقم بتعيين الخاصية AutoPostBack الخاصة به إلى True.
الشكل 1. تعبئة WebForm1 الافتراضي |
في هذه المقالة، أريد تتبع تدفق تنفيذ طلبي. أولاً، قم بتنشيط التتبع. يجب أن تحتوي تعليمات الصفحة على سمة التتبع، ويتم ضبط قيمتها على True (التبديل لعرض وضع مصدر HTML)، كما هو موضح في الشكل 2.
الشكل 2. تتبع التنشيط |
بعد ذلك، أقوم بإدراج عبارة تتبع في حدث تحميل النموذج حتى أعرف ما إذا كان قد حدث إعادة النشر. يعد حدث PostBack أحد أكثر الميزات إرباكًا في ASP.NET، وغالبًا ما يؤدي إلى فشل المطورين الجدد في ASP.NET.
Page_Load فرعي خاص (مرسل ByVal كـ System.Object، _ ByVal e As System.EventArgs) _ يتعامل مع MyBase.Load 'ضع رمز المستخدم لتهيئة الصفحة هنا Trace.Write("تم تحميل الصفحة") إذا لم يكن IsPostBack ثم Trace.Write("ليس في إعادة النشر") 'تنفيذ بعض العمليات عند حدوث إعادة النشرElse Trace.Write("في إعادة النشر") 'تنفيذ بعض العملياتEnd If نهاية الفرعية |
أود أيضًا معرفة ما إذا كان إعادة النشر يحدث عند تحديد عنصر ListBox:
ListBox1_SelectedIndexChanged الخاص الفرعي (ByVal sender As _ كائن النظام، _ ByVal e As System.EventArgs) مقابض _ ListBox1.SelectedIndexChanged Trace.Write("إعادة النشر في Listbox") نهاية الفرعية |
عند تنفيذ تطبيق ASP.NET أعلاه، سيتم عرض الإخراج التالي (كما هو موضح في الشكل 3):
الشكل 3. عرض معلومات التتبع |
يمكنك ملاحظة أنه عند تحميل WebForm1 لأول مرة، يمكنك رؤية السلاسل "تم تحميل الصفحة" و"ليس في إعادة النشر". إذا قمت بالنقر فوق الزر الموجود على WebForm1، يمكنك رؤية السجل الموضح في الشكل 4. وبالمثل، إذا تم النقر فوق ListBox، فسيتم أيضًا عرض سلسلة "إعادة نشر Listbox".
الشكل 4. التحقق من معلومات التتبع |
تحتوي صفحة التتبع على الأقسام التالية (لا تظهر جميع المعلومات في الشكل 3):
القسم | الوصف |
تفاصيل الطلب | يصف المعلومات المتعلقة بالطلب، مثل معرف المحادثة والتشفير ووقت الطلب. |
تحتوي معلومات التتبع | على تفاصيل التطبيقات قيد التشغيل حاليًا. يتم عرض معلومات التتبع في هذا القسم. |
تعرض شجرة التحكم | معلومات حول عناصر التحكم في الصفحة وحجم الحقول المخفية لحالة العرض. |
تعرض مجموعة ملفات تعريف الارتباط | ملفات تعريف الارتباط التي تحددها الصفحة وقيمها. |
تعرض مجموعة الرؤوس | معلومات رأس HTTP مثل طول المحتوى ووكيل المستخدم. |
تعرض مجموعة النماذج | أسماء عناصر التحكم الموجودة على الصفحة وقيمها. |
تعرض متغيرات الخادم | متغيرات البيئة من جانب الخادم. |
لاحظ أن معلومات التتبع الخاصة بنا تظهر أسفل "قسم معلومات التتبع". إذا كنت تريد إيقاف تشغيل التتبع، فما عليك سوى تعيين سمة التتبع في توجيه الصفحة إلى False. ليست هناك حاجة لإزالة تعليمات التتبع من التطبيق الخاص بك، حيث أصبح إيقاف تصحيح الأخطاء الآن بسيطًا مثل تعيين قيمة منطقية.
إن تشغيل/إيقاف تشغيل التتبع هو ببساطة مسألة تعديل قيمة سمة التتبع في توجيه الصفحة. يمكنك أيضًا إيقاف تشغيل التتبع برمجيًا باستخدام فئة التتبع. أعضاء فئة التتبع هم كما يلي:
يشير وصف | الخاصية |
IsEnabled | إلى ما إذا كان سيتم تنشيط تتبع الطلب الحالي. |
يقوم TraceMode | بتعيين وضع التتبع:sortByCategory أوsortByTime. |
الطريقة | الوصف |
تحذير | يعرض معلومات التتبع باللون الأحمر. |
كتابة | معلومات التتبع. |
لإيقاف تشغيل التتبع برمجياً، استخدم العبارة التالية في حدث تحميل WebForm1:
في حالتنا، لا يتم عرض معلومات التتبع بشكل بارز، لذلك يتم دفنها بواسطة معلومات التتبع الأخرى. يمكن لأسلوب Warn() لفئة التتبع طباعة معلومات التتبع باللون الأحمر. فبدلاً من كتابة الكود هكذا:
Trace.Write("تم تحميل الصفحة") |
بدلاً من:
Trace.Warn("تم تحميل الصفحة") |
يوضح الشكل 5 معلومات تصحيح الأخطاء المعروضة باللون الأحمر لطريقة Warn().
الشكل 5. استخدام طريقة Warn() لعرض معلومات التتبع باللون الأحمر |
فرز معلومات التتبع
قد يصبح وضع عبارات تتبع متعددة في أحد التطبيقات أمرًا مزدحمًا في بعض الأحيان. يكون التتبع أسهل إذا كان من الممكن تقسيم معلومات التتبع الخاصة بك إلى فئات مختلفة. تسمح لنا فئة التتبع بتصنيف وفرز معلومات التتبع بناءً على الفئة.
يوضح المثال التالي كيفية تجميع معلومات التتبع حسب الفئة:
Page_Load فرعي خاص (مرسل ByVal كـ System.Object، _ ByVal e As System.EventArgs) _ يتعامل مع MyBase.Load Trace.TraceMode = TraceMode.SortByCategory 'ضع رمز المستخدم لتهيئة الصفحة هنا Trace.Warn("Page_Load"، "تم تحميل الصفحة") إذا لم يكن IsPostBack ثم 'تنفيذ بعض العمليات Trace.Warn("Page_Load"، "ليس في إعادة النشر") آخر Trace.Warn("Page_Load"، "في إعادة النشر") نهاية إذا نهاية الفرعية
ListBox1_SelectedIndexChanged الخاص الفرعي (ByVal sender _ مثل System.Object، ByVal e As _ System.EventArgs) المقابض _ ListBox1.SelectedIndexChanged Trace.Warn ("ListBox"، "Listbox postback") نهاية الفرعية |
عند تنفيذ هذا المثال، سيتم عرض معلومات التصحيح التالية، مجمعة حسب الفئة (كما هو موضح في الشكل 6):
الشكل 6. الترتيب حسب الفئة |
دعونا نحلل الكود أعلاه:
Trace.TraceMode = TraceMode.SortByCategory |
تقوم الخاصية TraceMode بتعيين الأوضاع التي يدعمها التتبع:
· SortByCategory: فرز معلومات التتبع حسب النوع.
· SortByTime: عرض معلومات التتبع وفقًا لأمر التنفيذ.
ونظرًا لأننا اخترنا الفرز حسب وضع الفئة، فإن الشكل 7 يوضح المعلومات مرتبة حسب الفئة.
Trace.Warn("Page_Load"، "تم تحميل الصفحة") |
تعرض سمة التحذير الرسالة باللون الأحمر. لاحظ أن هذه طريقة مثقلة. في المثال، نمرر عليه معلمتين. فئة الإدخال الأولى (الفئة)، المعلمة الثانية هي الحصول على الرسالة (الرسالة).
بالإضافة إلى تعيين وضع التتبع باستخدام فئة التتبع، يمكنك أيضًا تحديد وضع التتبع باستخدام توجيهات الصفحة:
<%@ لغة الصفحة = "vb" Trace = "true" TraceMode = "SortByCategory" AutoEventWireup = "false" Codebehind = "WebForm1.aspx.vb" Inherits = "WebApplication1.WebForm1" %> |
تتبع التطبيق
يناقش القسم الأخير تتبع الصفحة، الذي يتتبع تدفق معلومات التنفيذ داخل الصفحة. يدعم ASP.NET أيضًا التتبع على مستوى التطبيق، ويتم تعيين التتبع على مستوى التطبيق في ملف web.config، ضمن قسم التتبع:
لتنشيط التتبع على مستوى التطبيق، قم بتعيين القيم التالية:
وصف | قيمة | الخاصية |
مُمكّن | صحيح | لتنشيط التتبع على مستوى التطبيق أو تعطيله. |
يحدد requestLimit | 10 | الحد الأقصى لعدد الطلبات التي يجب تتبعها. |
يعرض pageOutput | False | معلومات التتبع في نهاية الصفحة. |
TraceMode، | sortByTime، | طريقة فرز معلومات التتبع. |
يقوم localOnly | True | بتعيين القدرة على عرض آثار المتصفح على أجهزة الكمبيوتر غير المحلية. |
عند تحميل التطبيق، لا يتم عرض معلومات التتبع على الصفحة. لعرض معلومات التتبع، نحتاج إلى استخدام عارض التتبع (trace.axd):
الشكل 7. التتبع على مستوى التطبيق |
يوضح الشكل 7 معلومات التتبع للطلبات الستة الأخيرة للتطبيق. لعرض تفاصيل حول كل طلب، انقر فوق الرابط "عرض التفاصيل" لكل صف.
لاحظ أنه إذا تم تعيين التتبع على true في ملف web.config وتم تعيينه على false في توجيه الصفحة، فسيتم تعطيل التتبع.
تلخيص
ASP.NET يجعل تصحيح أخطاء تطبيقات الويب أسهل بكثير. الآن بعد أن عرفت كيفية استخدام التتبع، جربه وشاهد مدى تحسين إنتاجيتك!