مستوى الصفحة في ASP.NET Tracالبرمجة، تصحيح الأخطاء، معالجة الأخطاء

⚡ ملخص ذكي

تصحيح أخطاء ASP.NET، tracتساعد ميزات معالجة الأخطاء في Visual Studio المطورين على اكتشاف المشاكل مبكرًا ومتابعة الطلبات خلال trace.axd، وإعادة توجيه المستخدمين إلى صفحات خطأ مخصصة عند حدوث استثناءات غير معالجة أثناء دورة التطوير والإنتاج.

  • 🐞 التصحيح: تتيح لك نقاط التوقف في Visual Studio إيقاف التنفيذ مؤقتًا حتى تتمكن من فحص صفحة ASP.NET قيد التشغيل سطرًا بسطر.
  • 🔎 Tracجي: تمكين tracإضافة e في ملف web.config trace.axd، الذي يسرد كل طلب، ورمز حالته، وتوقيته.
  • 📄 صفحة Tracجي: إضافة Tracيُظهر استخدام e=”true” في توجيه الصفحة توقيت دورة حياة صفحة واحدة.
  • 🚧 أخطاء مخصصة: تقوم علامة customErrors بإعادة توجيه المستخدمين إلى صفحة خطأ سهلة الاستخدام عند فشل التطبيق.
  • 🧭 الاستثناءات غير المعالجة: يقوم Application_Error في ملف Global.asax بالتقاط الأخطاء غير المتوقعة وإعادة التوجيه إلى صفحة آمنة.
  • 🗃️ تسجيل الأخطاء: كتابة تفاصيل Server.GetLastError في ملف يسجل المشكلات لتصحيح الأخطاء لاحقًا.

مستوى الصفحة في ASP.NET Tracالبرمجة، وتصحيح الأخطاء، ومعالجة الأخطاء

في أي تطبيق، لا بد أن تحدث الأخطاء أثناء عملية التطوير. من المهم أن تكون قادرًا على اكتشاف الأخطاء في مرحلة مبكرة.

في بيئة Visual Studio، يُمكن القيام بذلك لتطبيقات ASP.NET. تُستخدم بيئة Visual Studio لتصحيح الأخطاء، وتتضمن تقنيات لمعالجة الأخطاء في ASP.NET.

ما هو التصحيح في ASP.NET؟

التصحيح هي عملية إضافة نقاط توقف إلى تطبيق. تُستخدم نقاط التوقف هذه لإيقاف تنفيذ البرنامج قيد التشغيل مؤقتًا. وهذا يسمح للمطور بفهم ما يحدث في البرنامج عند نقطة زمنية محددة.

لنأخذ مثالاً على برنامج. يعرض البرنامج عبارة "نحن بصدد تصحيح الأخطاء" للمستخدم. لنفترض أنه عند تشغيل التطبيق، ولسبب ما، لم تُعرض هذه العبارة. لتحديد المشكلة، نحتاج إلى إضافة نقطة توقف. يمكننا إضافة نقطة توقف إلى سطر الكود الذي يعرض هذه العبارة. ستوقف نقطة التوقف هذه تنفيذ البرنامج مؤقتًا. عند هذه النقطة، يستطيع المبرمج معرفة الخطأ المحتمل، ثم يقوم بتصحيح البرنامج وفقًا لذلك.

سنستخدم في هذا المثال تطبيقنا التجريبي الذي أنشأناه في فصول سابقة. سنرى في المثال التالي:

  • كيفية جعل التطبيق التجريبي يعرض سلسلة.
  • كيفية إضافة نقاط التوقف إلى التطبيق.
  • كيفية تصحيح التطبيق باستخدام نقطة التوقف هذه.

كيفية تصحيح أخطاء تطبيق في ASP.NET

فيما يلي خطوات إنشاء تطبيق تجريبي، وإضافة نقاط توقف، وتصحيح الأخطاء في ASP.NET:

الخطوة 1) افتح التطبيق في Visual Studio.
لنتأكد أولاً من فتح تطبيق الويب الخاص بنا في Visual Studio. تأكد من فتح تطبيق DemoApplication في Visual Studio.

تصحيح تطبيق في ASP.NET

الخطوة 2) الآن افتح الملف Demo.aspx.cs وأضف سطر التعليمات البرمجية أدناه.

  • نحن نقوم فقط بإضافة سطر التعليمات البرمجية Response.Write لعرض سلسلة.
  • لذا، عند تنفيذ التطبيق، يجب أن يعرض السلسلة "نحن نقوم بتصحيح الأخطاء" في متصفح الويب.

تصحيح تطبيق في ASP.NET

namespace DemoApplication
{
    public partial class Demo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write("We are debugging");
        }
    }
}

الخطوة 3) أضف نقطة توقف إلى التطبيق.
نقطة التوقف هي نقطة في Visual Studio تريد إيقاف تنفيذ البرنامج عندها.

تصحيح تطبيق في ASP.NET

  1. لإضافة نقطة توقف، انقر على العمود الذي تريد إدراج نقطة التوقف فيه. في حالتنا، نريد أن يتوقف برنامجنا عند سطر الكود "Response.Write". لا تحتاج إلى إضافة أي أمر لإضافة نقطة توقف، يكفي النقر على السطر الذي تريد إضافة نقطة التوقف إليه.
  2. بمجرد الانتهاء من ذلك، ستلاحظ أنه تم وضع علامة على الكود باللون الأحمر. تظهر أيضًا فقاعة حمراء في العمود المجاور لسطر التعليمات البرمجية.

ملاحظة: يمكنك إضافة نقاط توقف متعددة في التطبيق.

الخطوة الرابعة) قم بتشغيل التطبيق في وضع التصحيح.
الآن، عليك تشغيل تطبيقك باستخدام وضع التصحيح. في Visual Studio، اختر خيار القائمة Debug->Start Debugging.

تصحيح تطبيق في ASP.NET

انتاج:-

تصحيح تطبيق في ASP.NET

عند تنفيذ جميع الخطوات بشكل صحيح، سيتوقف تنفيذ البرنامج. سيذهب Visual Studio إلى نقطة التوقف ويضع علامة على سطر التعليمات البرمجية باللون الأصفر.

الآن، إذا شعر المبرمج أن الكود غير صحيح، فيمكن إيقاف التنفيذ. ويمكن بعد ذلك تعديل الكود وفقًا لذلك. لمواصلة متابعة البرنامج، يحتاج المبرمج إلى النقر فوق الزر F5 الموجود على لوحة المفاتيح.

ما هي تفاصيل Tracهل تعمل في ASP.NET؟

تطبيق tracجي يُتيح ذلك معرفة ما إذا كانت أي من الصفحات المطلوبة تُسبب خطأً. عندما tracتم تفعيل خاصية ing، وهي صفحة إضافية تسمى tracتمت إضافة e.axd إلى التطبيق (انظر الصورة أدناه). هذه الصفحة مرتبطة بالتطبيق وستعرض جميع الطلبات وحالتها.

Tracالعمل في ASP.NET

كيفية التمكين Tracإعداد تطبيق في ASP.NET

دعونا نلقي نظرة على كيفية التمكين tracing for an تطبيق ASP.NET:

الخطوة 1) لنبدأ العمل على تطبيقنا التجريبي. افتح ملف web.config من مستكشف الحلول.

تفعيل tracإعداد تطبيق في ASP.NET

الخطوة 2) أضف سطر التعليمات البرمجية التالي إلى ملف web.config. tracيُستخدم البيان e لتمكين tracing for the application.

  • الحد الأقصى للطلبات في tracيحدد البيان عدد طلبات الصفحات التي يجب أن تكون tracأد.
  • في مثالنا، نحدد حدًا أقصى قدره 40. نحدد حدًا أقصى لأن القيمة الأعلى ستؤدي إلى تدهور أداء التطبيق.

تفعيل tracإعداد تطبيق في ASP.NET

<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
        <httpRuntime targetFramework="4.0" />

        <trace enabled="true" pageOutput="false" requestLimit="40" localOnly="false" />

    </system.web>
</configuration>

قم بتشغيل تطبيق العرض التوضيحي في Visual Studio.

انتاج:-

تفعيل tracإعداد تطبيق في ASP.NET

إذا قمت الآن بالتصفح إلى URL http://localhost:53003/trace.axdستظهر لك معلومات كل طلب. هنا يمكنك معرفة ما إذا كانت هناك أي أخطاء في التطبيق. تُعرض الأنواع التالية من المعلومات على الصفحة:

  1. وقت طلب صفحة الويب.
  2. اسم صفحة الويب المطلوبة.
  3. رمز حالة طلب الويب (رمز الحالة 200 يعني أن الطلب ناجح).
  4. يُتيح لك رابط "عرض التفاصيل" الاطلاع على مزيد من المعلومات حول طلب الويب. ومن أهم هذه التفاصيل معلومات الترويسة، التي توضح البيانات المُرسلة في ترويسة كل طلب ويب.

تفعيل tracإعداد تطبيق في ASP.NET

مستوى الصفحة Tracالعمل في ASP.NET

مستوى الصفحة Tracجي في ASP.NET، يعرض هذا القسم جميع المعلومات العامة حول صفحة الويب أثناء معالجتها. يُفيد هذا في تصحيح الأخطاء إذا لم تعمل الصفحة لأي سبب. يوفر Visual Studio معلومات تفصيلية حول جوانب مختلفة من الصفحة، مثل وقت تنفيذ كل دالة يتم استدعاؤها في طلب الويب.

على سبيل المثال، إذا كان تطبيق الويب الخاص بك يعاني من مشكلة في الأداء، فإن هذه المعلومات قد تساعد في تشخيص المشكلة. تُعرض هذه المعلومات عند تشغيل التطبيق في Visual Studio.

كيفية التمكين Tracعلى مستوى الصفحة في ASP.NET

دعونا نلقي نظرة على كيفية تفعيل مستوى الصفحة tracتطبيق ASP.NET:

الخطوة 1) لنبدأ العمل على تطبيقنا التجريبي. افتح ملف demo.aspx من مستكشف الحلول.

مستوى الصفحة Tracالعمل في ASP.NET

الخطوة 2) أضف سطر التعليمات البرمجية التالي لتمكين الصفحة tracفي تعريف الصفحة، ما عليك سوى إضافة السمة Tracسيسمح سطر الكود هذا بتفعيل خاصية e=”true”. على مستوى الصفحة tracجي.

مستوى الصفحة Tracالعمل في ASP.NET

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="DemoApplication.Demo" Trace="true" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>

قم بتشغيل التطبيق في Visual Studio.

انتاج:-

مستوى الصفحة Tracالعمل في ASP.NET

الآن عندما يتم عرض صفحة الويب Demo.aspx، ستحصل على قدر كبير من المعلومات حول الصفحة. يتم عرض معلومات مثل الوقت لكل جانب من جوانب دورة حياة الصفحة على هذه الصفحة.

معالجة الأخطاء: عرض صفحة خطأ مخصصة

In ASP.NETيمكنك عرض صفحات أخطاء مخصصة للمستخدمين. إذا احتوى التطبيق على أي نوع من الأخطاء، فسوف تعرض صفحة مخصصة هذا الخطأ للمستخدم.

في مثالنا، سنضيف أولًا صفحة HTML. ستعرض هذه الصفحة للمستخدم عبارة "نحن بصدد دراسة المشكلة". ثم سنضيف رمز خطأ إلى صفحة demo.aspx لعرض صفحة الخطأ. لنتبع الخطوات المذكورة أدناه.

الخطوة 1) لنبدأ العمل على تطبيقنا التجريبي. لنضف صفحة HTML إلى التطبيق.

  1. انقر بزر الماوس الأيمن على تطبيق العرض التوضيحي في مستكشف الحلول.
  2. اختر خيار القائمة إضافة -> صفحة HTML.

معالجة الأخطاء في ASP.NET

الخطوة 2) في الخطوة التالية، نحتاج إلى توفير اسم لصفحة HTML الجديدة.

  1. أدخل الاسم كصفحة خطأ.
  2. انقر فوق الزر "موافق" للمتابعة.

معالجة الأخطاء في ASP.NET

الخطوة 3) ستُفتح صفحة الخطأ تلقائيًا في Visual Studio. إذا انتقلت إلى مستكشف الحلول، فسترى الملف المُضاف.

معالجة الأخطاء في ASP.NET

أضف سطر التعليمات البرمجية "نحن بصدد دراسة المشكلة" إلى صفحة HTML. لا يلزمك إغلاق ملف HTML قبل إجراء التغيير على ملف web.config.

معالجة الأخطاء في ASP.NET

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    We are looking into the problem
</body>
</html>

الخطوة 4) الآن، عليك إجراء تغيير في ملف web.config. سيُعلم هذا التغيير التطبيق بضرورة عرض صفحة الخطأ المخصصة عند حدوث أي خطأ. يسمح لك الوسم customErrors بتحديد صفحة خطأ مخصصة. يتم تعيين خاصية defaultRedirect إلى اسم صفحة الخطأ المخصصة التي أنشأناها في الخطوة السابقة.

معالجة الأخطاء في ASP.NET

<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
        <httpRuntime targetFramework="4.0" />

        <customErrors mode="On" defaultRedirect="ErrorPage.html">
        </customErrors>

    </system.web>
</configuration>

الخطوة 5) والآن، دعونا نضيف بعض التعليمات البرمجية المعيبة إلى صفحة demo.aspx.cs. افتح هذه الصفحة بالنقر المزدوج على الملف في مستكشف الحلول.

معالجة الأخطاء في ASP.NET

قم بإضافة التعليمات البرمجية أدناه إلى الملف Demo.aspx.cs.

  • تم تصميم هذه الأسطر البرمجية لقراءة أسطر النص من ملف.
  • من المفترض أن يكون الملف موجودًا في محرك الأقراص D باسم Example.txt.
  • لكن في حالتنا، هذا الملف غير موجود بالفعل. لذلك سيؤدي هذا الرمز إلى حدوث خطأ عند تشغيل التطبيق.

معالجة الأخطاء في ASP.NET

namespace DemoApplication
{
    public partial class Demo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            String path = @"D:\Example.txt";
            string[] lines;
            lines = File.ReadAllLines(path);
        }
    }
}

الآن قم بتنفيذ الكود في البصرية ستوديو ويجب أن تحصل على الإخراج أدناه.

انتاج:-

معالجة الأخطاء في ASP.NET

تُظهر الصفحة أعلاه حدوث خطأ في التطبيق. ونتيجةً لذلك، يتم عرض صفحة ErrorPage.html للمستخدم.

ASP.NET استثناء غير معالج

حتى في أفضل الأحوال، قد تحدث أخطاء غير متوقعة. لنفترض أن المستخدم انتقل إلى صفحة خاطئة في التطبيق. هذا أمر لا يمكن التنبؤ به. في مثل هذه الحالات، يمكن لـ ASP.NET إعادة توجيه المستخدم إلى صفحة الخطأ ErrorPage.html.

دعونا نرى مثالاً على ذلك.

  • سنستخدم نفس تطبيق العرض التوضيحي الذي يحتوي على صفحة الخطأ ErrorPage.html.
  • وسنحاول عرض صفحة ويب غير موجودة في تطبيقنا.
  • في هذه الحالة، يجب إعادة توجيهنا إلى صفحة ErrorPage.html. دعونا نرى الخطوات اللازمة لتحقيق ذلك.

الخطوة 1) لنبدأ العمل على تطبيقنا التجريبي. افتح ملف Global.asax.cs من مستكشف الحلول.

ASP.NET استثناء غير معالج

ملاحظة: يُستخدم ملف Global.asax.cs لإضافة التعليمات البرمجية التي ستكون قابلة للتطبيق في جميع صفحات التطبيق.

الخطوة 2) أضف سطر التعليمات البرمجية التالي إلى ملف Global.asax.cs. ستُستخدم هذه الأسطر للتحقق من الأخطاء وعرض صفحة ErrorPage.html وفقًا لذلك.

ASP.NET استثناء غير معالج

namespace DemoApplication
{
    public class Global : System.Web.HttpApplication
    {
        protected void Application_Error(object sender, EventArgs e)
        {
            HttpException lastErrorWrapper = Server.GetLastError() as HttpException;

            if (lastErrorWrapper.GetHttpCode() == 404)
                Server.Transfer("~/ErrorPage.html");
        }
    }
}

Code تفسير:-

  1. السطر الأول هو معالج حدث Application_Error. يتم استدعاء هذا الحدث عند حدوث خطأ في التطبيق. لاحظ أن اسم الحدث يجب أن يكون Application_Error، وأن تكون المعلمات كما هو موضح أعلاه.
  2. بعد ذلك، نقوم بتعريف كائن من نوع الفئة HttpException. وهو كائن قياسي سيحمل كافة تفاصيل الخطأ. ثم نستخدم طريقة Server.GetLastError للحصول على كافة تفاصيل الخطأ الأخير الذي حدث في التطبيق.
  3. ثم نتحقق مما إذا كان رمز الخطأ الأخير هو 404 (رمز الخطأ 404 هو الرمز القياسي الذي يُعاد عند محاولة المستخدم الوصول إلى صفحة غير موجودة). بعد ذلك، ننقل المستخدم إلى صفحة ErrorPage.html إذا تطابق رمز الخطأ.

الآن قم بتشغيل الكود في Visual Studio وستحصل على المخرجات التالية.

انتاج:-

تصفح الصفحة http://localhost:53003/Demo1.aspx. تذكر أن Demo1.aspx غير موجود في تطبيقنا. سوف تحصل بعد ذلك على الإخراج أدناه.

استثناء غير معالج في ASP.NET

تُظهر الصفحة أعلاه حدوث خطأ في التطبيق. ونتيجةً لذلك، يتم عرض صفحة ErrorPage.html للمستخدم.

تسجيل أخطاء ASP.NET

يُساعد تسجيل أخطاء التطبيق المطور على تصحيحها وحلها لاحقًا. يوفر ASP.NET خاصية تسجيل الأخطاء، ويتم ذلك في ملف Global.asax.cs عند رصد الخطأ. أثناء عملية الرصد، تُكتب رسالة الخطأ في ملف سجل.

دعونا نرى مثالاً على ذلك.

  • سنستخدم نفس تطبيق العرض التوضيحي الذي يحتوي على صفحة الخطأ ErrorPage.html.
  • وسنحاول عرض صفحة ويب غير موجودة في تطبيقنا.
  • يجب أن تتم إعادة توجيهنا إلى صفحة ErrorPage.html الخاصة بنا في هذه الحالة.
  • وفي الوقت نفسه، سنكتب رسالة الخطأ في ملف سجل. دعونا نرى الخطوات اللازمة لتحقيق ذلك.

الخطوة 1) لنبدأ العمل على تطبيقنا التجريبي. افتح ملف Global.asax.cs من مستكشف الحلول.

تسجيل أخطاء ASP.NET

الخطوة 2) أضف سطر الكود التالي إلى ملف Global.asax.cs. سيتحقق هذا السطر من وجود أخطاء ويعرض صفحة ErrorPage.html بناءً عليها. كما سيتم تسجيل تفاصيل الأخطاء في ملف باسم AllErrors.txt. في هذا المثال، سنكتب الكود لإنشاء هذا الملف على القرص D.

تسجيل أخطاء ASP.NET

namespace DemoApplication
{
    public class Global : System.Web.HttpApplication
    {
        protected void Application_Error(object sender, EventArgs e)
        {
            Exception exc = Server.GetLastError();
            String str = "";
            str = exc.Message;

            String path = @"D:\AllErrors.txt";
            File.WriteAllText(path, str);
            Server.Transfer("~/ErrorPage.html");
        }
    }
}

Code تفسير:-

  1. السطر الأول هو الحصول على الخطأ نفسه باستخدام دالة Server.GetLastError. ثم يتم تعيين هذا الخطأ إلى المتغير exc.
  2. ثم نُنشئ متغيرًا نصيًا فارغًا باسم str. ونحصل على رسالة الخطأ الفعلية باستخدام الخاصية exc.Message. تحتوي الخاصية exc.Message على الرسالة الدقيقة لأي خطأ يحدث أثناء تشغيل التطبيق. ثم نُسند هذه الرسالة إلى المتغير النصي.
  3. بعد ذلك، نُعرّف الملف المسمى AllErrors.txt. هذا هو المكان الذي ستُرسل إليه جميع رسائل الخطأ. نكتب السلسلة النصية str التي تحتوي على جميع رسائل الخطأ في هذا الملف.
  4. وأخيرًا، نقوم بنقل المستخدم إلى ملف ErrorPage.html.

انتاج:-

تصفح الصفحة http://localhost:53003/Demo1.aspx. تذكر أن Demo1.aspx غير موجود في تطبيقنا. سوف تحصل بعد ذلك على الإخراج أدناه.

تسجيل أخطاء ASP.NET

وفي الوقت نفسه، إذا قمت بفتح ملف AllErrors.txt فسترى المعلومات التالية.

تسجيل أخطاء ASP.NET

يمكن بعد ذلك إرسال رسالة الخطأ إلى المطور في وقت لاحق لأغراض التصحيح.

الأسئلة الشائعة

نعم. يمكن لأدوات الذكاء الاصطناعي مثل GitHub Copilot أن تقترح نقاط توقف، وتشرح الاستثناء، وتقترح إصلاحات لرمز ASP.NET. Revراجع كل اقتراح وحاول إعادة إنتاج الخطأ بنفسك، لأن الذكاء الاصطناعي قد يسيء قراءة حالة التطبيق.

نعم. تتضمن أدوات مثل هذه ميزات التعلم الآلي. Azure تستطيع خدمة Application Insights رصد الارتفاعات غير المعتادة في الاستثناءات أو بطء الطلبات تلقائيًا. وهذا يساعد الفرق على اكتشاف مشكلات الإنتاج بشكل أسرع من فحص ملفات السجلات الخام يدويًا.

لا. إيقاف وضع customErrors يكشف مكدس الاستدعاءات. tracيُعرّض هذا الأمر جميع الزوار لمعلومات حساسة، مما يُشكّل خطرًا أمنيًا. استخدم وضع RemoteOnly أو On في بيئة الإنتاج بحيث لا يرى تفاصيل الخطأ كاملةً إلا المطورون المحليون.

يعرض خيار RemoteOnly صفحات الأخطاء التفصيلية فقط للمتصفحات على الخادم المحلي، بينما يتم توجيه المستخدمين عن بُعد إلى صفحة إعادة التوجيه الافتراضية. يُعد هذا حلاً وسطاً آمناً لتصحيح أخطاء موقع مباشر دون تسريب أي معلومات.

قم بتعيين debug=”false” في عنصر التجميع في ملف web.config. يعمل وضع التصحيح على تعطيل التحسينات، وزيادة مهلة الانتظار، وزيادة استخدام الذاكرة، لذا يجب دائمًا شحن مواقع الإنتاج مع إيقاف تشغيله. البصرية ستوديو.

لا. مفتوح tracيمكن لملف e.axd كشف عناوين HTTP ومتغيرات الجلسة والخادم للمهاجمين. اضبط localOnly على "true" أو عطّله. tracيتم ذلك بالكامل قبل النشر، لذا tracلا يتم الكشف عن البيانات الإلكترونية للمستخدمين عن بعد.

تقوم وظيفة Server.Transfer بإعادة توجيه الطلب إلى صفحة الخطأ على الخادم دون تغيير المتصفح URL أو القيام برحلة ذهابًا وإيابًا. تُرسل Response.Redirect طلبًا جديدًا إلى المتصفح، لتحديث URL إلى صفحة الخطأ.

قم بالتقاط رسالة الاستثناء، ومكدس الاستثناءات. tracهـ، مطلوب URL، والطابع الزمني، وسياق المستخدم. تُمكّن هذه التفاصيل المطورين من إعادة إنتاج الخطأ لاحقًا. يكشف Server.GetLastError في Application_Error عن الاستثناء بحيث يمكنك كتابته إلى ملف أو قاعدة بيانات.

تلخيص هذه التدوينة بـ: