استكشاف أخطاء تطبيق في Azure App Service وإصلاحها باستخدام Visual Studio

نظرة عامة

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

ستتعلم ما يلي:

  • وظائف إدارة التطبيقات المتوفرة في Visual Studio.
  • كيفية استخدام طريقة عرض Visual Studio عن بعد لإجراء تغييرات سريعة في تطبيق بعيد.
  • كيفية تشغيل وضع التصحيح عن بعد أثناء تشغيل مشروع في Azure لكل من التطبيق وWebJob.
  • كيفية إنشاء سجلات تتبع التطبيق وعرضها أثناء إنشاء التطبيق لها.
  • كيفية عرض سجلات خادم الويب، بما في ذلك رسائل الخطأ التفصيلية وتتبع الطلبات الفاشلة.
  • كيفية إرسال سجلات التشخيص إلى حساب Azure Storage وعرضها هناك.

إذا كان لديك Visual Studio Ultimate، يمكنك أيضاً استخدام IntelliTrace لتصحيح الأخطاء. لن يتم تناول IntelliTrace في هذا البرنامج التعليمي.

المتطلبات الأساسية

يعمل هذا البرنامج التعليمي مع بيئة التطوير ومشروع الويب وتطبيق App Service الذي قمت بإعداده في إنشاء تطبيق ASP.NET في Azure App Service. بالنسبة إلى أقسام WebJobs، ستحتاج إلى التطبيق الذي تقوم بإنشائه في بدء الاستخدام باستخدام Azure WebJobs SDK.

تختص نماذج التعليمات البرمجية الموضحة في هذا البرنامج التعليمي بتطبيق ويب C# MVC، ولكن إجراءات استكشاف الأخطاء وإصلاحها هي نفسها لتطبيقات Visual Basic ونماذج الويب.

يفترض البرنامج التعليمي أنك تستخدم Visual Studio 2019.

تعمل ميزة سجلات الدفق فقط للتطبيقات التي تستهدف.NET Framework 4 أو أحدث.

تكوين التطبيق وإدارته

يوفر Visual Studio إمكانية الوصول إلى مجموعة فرعية من وظائف إدارة التطبيقات وإعدادات التكوين المتوفرة في مدخل Azure. في هذا القسم، سترى ما هو متوفر باستخدام Server Explorer. للاطلاع على أحدث ميزات تكامل Azure، جرب Cloud Explorer أيضاً. يمكنك فتح كلتا النافذتين من القائمة عرض.

  1. إذا لم تكن قد سجلت الدخول بالفعل إلى Azure في Visual Studio، فانقر بزر الماوس الأيمن فوق Azure وحدد الاتصال باشتراك Microsoft Azure في Server Explorer.

    ويتمثل البديل في تثبيت شهادة إدارة تمكن من الوصول إلى حسابك. إذا اخترت تثبيت الشهادة، فانقر بزر الماوس الأيمن فوق عقدة Azure في Server Explorer، ثم حدد إدارة الاشتراكات وتصفيتها في قائمة السياق. في مربع الحوار إدارة اشتراكات Microsoft Azure، انقر فوق علامة التبويب شهادات، ثم انقر فوق استيراد. اتبع الإرشادات لتنزيل ملف الاشتراك ثم استيراده (يسمى أيضاً ملف .publishsettings ) لحساب Azure الخاص بك.

    إشعار

    إذا قمت بتنزيل ملف اشتراك، فاحفظه في مجلد خارج دلائل التعليمات البرمجية المصدر (على سبيل المثال، في مجلد التنزيلات)، ثم احذفه بمجرد اكتمال الاستيراد. يمكن للمستخدم الضار الذي يحصل على حق الوصول إلى ملف الاشتراك تحرير خدمات Azure وإنشاءها وحذفها.

    لمزيد من المعلومات حول الاتصال بموارد Azure من Visual Studio، اطلع على تعيين أدوار Azure باستخدام مدخل Azure.

  2. في Server Explorer، قم بتوسيع Azure وتوسيع App Service.

  3. قم بتوسيع مجموعة الموارد التي تتضمن التطبيق الذي قمت بإنشائه في إنشاء تطبيق ASP.NET في Azure App Service، ثم انقر بزر الماوس الأيمن فوق عقدة التطبيق وانقر فوق عرض الإعدادات.

    View Settings in Server Explorer

    ستظهر علامة التبويب Azure Web App، وستجد هناك مهام إدارة التطبيق وتكوينه المتوفرة في Visual Studio.

    Azure Web App window

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

    للحصول على معلومات حول مربعات إعدادات التطبيق وسلاسل الاتصال في هذه النافذة، اطلع على Azure App Service: كيفية عمل سلاسل التطبيق وسلاسل الاتصال.

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

الوصول إلى ملفات التطبيقات في Server Explorer

عادةً ما تقوم بنشر مشروع ويب مع العلامة customErrors في ملف Web.config المعين إلى On أو RemoteOnly، مما يعني أنك لا تحصل على رسالة خطأ مفيدة عند حدوث خطأ ما. بالنسبة للعديد من الأخطاء، كل ما تحصل عليه هو صفحة مثل إحدى الأخطاء التالية:

خطأ الخادم في تطبيق '/':

Screenshot showing a Server Error in '/' Application error in a web browser.

حدث خطأ ما:

Screenshot showing an example of a generic error occurring in a web browser.

لا يمكن لموقع الويب عرض الصفحة

Screenshot showing a message that reads **The website cannot display the page error in a web browser**.

غالباً ما تكون أسهل طريقة للعثور على سبب الخطأ هي تمكين رسائل الخطأ التفصيلية، والتي توضح أول لقطات الشاشة السابقة كيفية القيام بها. يتطلب ذلك تغييراً في ملف Web.config المنشور. يمكنك تحرير ملف Web.config في المشروع وإعادة نشر المشروع، أو إنشاء Web.config تحويل ونشر بنية تتبع الأخطاء، ولكن هناك طريقة أسرع: في مستكشف الحلول، يمكنك عرض الملفات وتحريرها مباشرةً في التطبيق البعيد باستخدام ميزة العرض عن بعد.

  1. في Server Explorer، قم بتوسيع Azure، وتوسيع App Service، وتوسيع مجموعة الموارد الموجودة في تطبيقك، ثم توسيع العقدة لتطبيقك.

    ستجد العقد التي تمنحك حق الوصول إلى ملفات محتوى التطبيق وملفات السجل.

  2. قم بتوسيع عقدة Files، وانقر نقراً مزدوجاً فوق ملف Web.config.

    Open Web.config

    يفتح Visual Studio ملف Web.config من التطبيق البعيد ويعرض [Remote] بجوار اسم الملف في شريط العنوان.

  3. أضف السطر التالي إلى العنصر system.web:

    <customErrors mode="Off"></customErrors>

    Edit Web.config

  4. قم بتحديث المستعرض الذي يعرض رسالة الخطأ غير المفيدة، وستحصل الآن على رسالة خطأ مفصلة، مثل المثال التالي:

    Detailed error message

    (تم إنشاء الخطأ المعروض عن طريق إضافة السطر الموضح باللون الأحمر إلى Views\Home\Index.cshtml.)

يعد تحرير ملف Web.config مثالاً واحداً فقط على السيناريوهات التي تجعل القدرة على قراءة الملفات وتحريرها في تطبيق App Service الخاص بك عملية استكشاف الأخطاء وإصلاحها عملية أسهل.

تطبيقات تصحيح الأخطاء عن بعد

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

لا يعمل تصحيح الأخطاء عن بعد في إصدارات Express من Visual Studio.

يوضح هذا القسم كيفية تتبع الأخطاء عن بعد باستخدام المشروع الذي تقوم بإنشائه في إنشاء تطبيق ASP.NET في Azure App Service.

  1. افتح مشروع الويب الذي قمت بإنشائه في إنشاء تطبيق ASP.NET في Azure App Service.

  2. افتح Controllers\HomeController.cs.

  3. احذف الأسلوب About() وأدرج التعليمات البرمجية التالية في مكانه.

    public ActionResult About()
    {
        string currentTime = DateTime.Now.ToLongTimeString();
        ViewBag.Message = "The current time is " + currentTime;
        return View();
    }
    
  4. تعيين نقطة توقف على ViewBag.Message السطر.

  5. فيمستكشف الحلول، انقر بزر الماوس الأيمن فوق المشروع وانقر فوق نشر.

  6. في القائمة المنسدلة ملف التعريف، حدد نفس ملف التعريف الذي استخدمته في إنشاء تطبيق ASP.NET في Azure App Service. ثم انقر فوق الإعدادات.

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

    Publish in debug mode

  8. انقر فوق نشر. بعد انتهاء النشر وفتح المستعرض الخاص بك على عنوان URL Azure لتطبيقك، أغلق المستعرض.

  9. في Server Explorer، انقر بزر الماوس الأيمن فوق التطبيق، ثم انقر فوق إرفاق مصحح الأخطاء.

    Screenshot of the Server Explorer window showing an app selected and then clicking Attach Debugger.

    يفتح المستعرض تلقائياً على الصفحة الرئيسية التي تعمل في Azure. قد تضطر إلى الانتظار 20 ثانية أو نحو ذلك أثناء إعداد Azure للخادم لتصحيح الأخطاء. ويحدث هذا التأخير فقط في المرة الأولى التي تعمل فيها في وضع تتبع الأخطاء على أحد التطبيقات في فترة 48 ساعة. عندما تبدأ تصحيح الأخطاء مرة أخرى في نفس الفترة، لا يحدث أي تأخير.

    إشعار

    إذا كان لديك أي مشكلة في بدء تشغيل مصحح الأخطاء، فحاول القيام بذلك باستخدام Cloud Explorer بدلا من Server Explorer.

  10. انقر فوق حول في القائمة.

    يتوقف Visual Studio على نقطة التوقف، ويتم تشغيل التعليمات البرمجية في Azure، وليس على الكمبيوتر المحلي.

  11. مرر مؤشر الماوس فوق المتغير currentTime لرؤية قيمة الوقت.

    View variable in debug mode running in Azure

    يعد الوقت الذي تراه هو وقت خادم Azure، والذي قد يكون في منطقة زمنية مختلفة عن الكمبيوتر المحلي.

  12. أدخل قيمة جديدة للمتغير currentTime، مثل "قيد التشغيل الآن في Azure".

  13. اضغط على F5 للمتابعة.

    تعرض الصفحة "حول" قيد التشغيل في Azure القيمة الجديدة التي أدخلتها في متغير currentTime.

    About page with new value

تصحيح أخطاء WebJobs عن بعد

يوضح هذا القسم كيفية تصحيح الأخطاء عن بعد باستخدام المشروع والتطبيق اللذان تقوم بإنشائهما في بدء الاستخدام باستخدام Azure WebJobs SDK.

تتوفر الميزات المعروضة في هذا القسم فقط في Visual Studio 2013 مع التحديث 4 أو أحدث.

يعمل تصحيح الأخطاء عن بعد فقط مع WebJobs المستمر. لا يدعم WebJobs المجدول عند الطلب تصحيح الأخطاء.

  1. افتح مشروع الويب الذي قمت بإنشائه في بدء الاستخدام باستخدام Azure WebJobs SDK.

  2. في مشروع ContosoAdsWebJob الجديد، افتح ⁧⁩Functions.cs⁧⁩.

  3. قم بتعيين نقطة توقف على العبارة الأولى في الأسلوب GenerateThumbnail.

    Set breakpoint

  4. في مستكشف الحلول، انقر بزر الماوس الأيمن فوق مشروع الويب (وليس مشروع WebJob)، وانقر فوق نشر.

  5. في القائمة المنسدلة ملف التعريف، حدد نفس ملف التعريف الذي استخدمته في بدء استخدام Azure WebJobs SDK.

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

    ينشر Visual Studio مشاريع الويب وWebJob، ويفتح المستعرض الخاص بك على عنوان URL الخاص بـ Azure لتطبيقك.

  7. في Server Explorer، قم بتوسيع Azure > App Service > مجموعة الموارد > تطبيقك > WebJobs > المستمر، ثم انقر بزر الماوس الأيمن فوق ContosoAdsWebJob.

  8. انقر فوق إرفاق مصحح الأخطاء.

    Screenshot of Server Explorer showing ContosoAdsWebJob selected in the drop-down menu and Attach Debugger selected.

    يفتح المستعرض تلقائياً على الصفحة الرئيسية التي تعمل في Azure. قد تضطر إلى الانتظار 20 ثانية أو نحو ذلك أثناء إعداد Azure للخادم لتصحيح الأخطاء. ويحدث هذا التأخير فقط في المرة الأولى التي تعمل فيها في وضع تتبع الأخطاء على أحد التطبيقات في فترة 48 ساعة. عندما تبدأ تصحيح الأخطاء مرة أخرى في نفس الفترة، لا يحدث أي تأخير.

  9. في مستعرض الويب الذي يتم فتحه على الصفحة الرئيسية لإعلانات Contoso، أنشئ إعلاناً جديداً.

    يؤدي إنشاء الإعلان إلى إنشاء رسالة قائمة انتظار، والتي يتم التقاطها بواسطة WebJob ومعالجتها. عندما يستدعي WebJobs SDK الوظيفة لمعالجة رسالة قائمة الانتظار، تصل التعليمات البرمجية إلى نقطة التوقف الخاصة بك.

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

    blobInfo object in debugger

  11. اضغط على F5 للمتابعة.

    ينتهي الأسلوب GenerateThumbnail من إنشاء الصورة المصغرة.

  12. في المستعرض، قم بتحديث صفحة الفهرس وسترى الصورة المصغرة.

  13. لإيقاف التصحيح، اضغط على Shift+F5 في Visual Studio.

  14. في Server Explorer، انقر بزر الماوس الأيمن فوق عقدة ContosoAdsWebJob وانقر فوق عرض لوحة المعلومات.

  15. سجل الدخول باستخدام بيانات اعتماد Azure، ثم انقر فوق اسم WebJob للانتقال إلى صفحة WebJob.

    Click ContosoAdsWebJob

    ستعرض لوحة المعلومات أن الوظيفة GenerateThumbnail تم تنفيذها مؤخراً.

    (في المرة التالية التي تنقر فيها فوق عرض لوحة المعلومات، لن تحتاج إلى تسجيل الدخول، وسينتقل المستعرض مباشرة إلى صفحة WebJob.)

  16. انقر فوق اسم الوظيفة للاطلاع على التفاصيل حول تنفيذ الوظيفة.

    Function details

إذا كتبت الوظيفة سجلات، فيمكنك النقر فوق ToggleOutput لرؤيتها.

ملاحظات حول تصحيح الأخطاء عن بعد

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

  • تجنب التوقفات الطويلة عند نقاط التوقف عند تصحيح الأخطاء عن بعد. يتعامل Azure مع أي عملية تم إيقافها لفترة أطول من بضع دقائق كعملية غير مستجيبة، ويعمل على إيقاف تشغيلها.

  • أثناء تصحيح الأخطاء، يرسل الخادم البيانات إلى Visual Studio، مما قد يؤثر على رسوم النطاق الترددي. للحصول على معلومات حول أسعار النطاق الترددي، اطلع على أسعار Azure.

  • تأكد من تعيين سمة debugcompilation العنصر في ملف Web.config إلى true. يتم تعيينها إلى true بشكل افتراضي عند نشر تكوين إصدار تتبع الأخطاء.

    <system.web>
      <compilation debug="true" targetFramework="4.5" />
      <httpRuntime targetFramework="4.5" />
    </system.web>
    
  • إذا وجدت أن مصحح الأخطاء لا يدخل في التعليمات البرمجية التي تريد تصحيحها، فقد تحتاج إلى تغيير إعداد "التعليمات البرمجية الخاصة بي فقط". لمزيد من المعلومات، اطلع على تحديد ما إذا كنت تريد تصحيح أخطاء التعليمات البرمجية للمستخدم فقط باستخدام إعدادا "التعليمات البرمجية الخاصة بي فقط" في Visual Studio.

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

  • يمكنك إرفاق مصحح الأخطاء يدوياً بأي عملية، وليس فقط عملية التطبيق (w3wp.exe). لمزيد من المعلومات حول كيفية استخدام وضع التصحيح في Visual Studio، اطلع على تصحيح الأخطاء في Visual Studio.

نظرة عامة على سجلات التشخيص

يمكن لتطبيق ASP.NET الذي يعمل في تطبيق App Service إنشاء الأنواع التالية من السجلات:

  • سجلات تتبع التطبيق
    ينشئ التطبيق هذه السجلات عن طريق استدعاء أساليب فئة System.Diagnostics.Trace.
  • سجلات خادم الويب
    ينشئ خادم الويب إدخال سجل لكل طلب HTTP إلى التطبيق.
  • سجلات رسائل الخطأ المفصلة
    ينشئ خادم الويب صفحة HTML مع بعض المعلومات الإضافية لطلبات HTTP الفاشلة (الطلبات التي تؤدي إلى ظهور رمز الحالة 400 أو أعلى).
  • سجلات تتبع الطلبات الفاشلة
    ينشئ خادم الويب ملف XML مع معلومات تتبع مفصلة لطلبات HTTP الفاشلة. يوفر خادم الويب أيضاً ملف XSL لتنسيق XML في المستعرض.

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

تتم كتابة السجلات إلى الملفات الموجودة في مجلد LogFiles في نظام الملفات لتطبيقك ويمكن الوصول إليها عبر FTP. كما يمكن كتابة سجلات خادم الويب وسجلات التطبيقات إلى حساب Azure Storage. يمكنك الاحتفاظ بحجم سجلات أكبر في حساب التخزين إذا كان الأمر ممكناً في نظام الملفات. وتقتصر على 100 ميغابايت كحد أقصى من السجلات عند استخدام نظام الملفات. (تُخصص سجلات نظام الملفات فقط لاستبقائها على المدى القصير. ويحذف Azure ملفات السجلات القديمة لتوفير مساحة لملفات جديدة بعد الوصول إلى الحد الأقصى.)

إنشاء سجلات تتبع التطبيق وعرضها

في هذا القسم، ستقوم بالمهام التالية:

  • أضف عبارات التتبع إلى مشروع الويب الذي قمت بإنشائه في بدء استخدام Azure ASP.NET.
  • عرض السجلات عند تشغيل المشروع محلياً.
  • عرض السجلات كما يتم إنشاؤها بواسطة التطبيق الذي يعمل في Azure.

للحصول على معلومات حول كيفية إنشاء سجلات التطبيقات في WebJobs، اطلع على كيفية العمل مع تخزين قائمة انتظار Azure باستخدام WebJobs SDK - كيفية كتابة السجلات. تنطبق الإرشادات التالية لعرض السجلات والتحكم في كيفية تخزينها في Azure أيضا على سجلات التطبيقات التي تم إنشاؤها بواسطة WebJobs.

إضافة عبارات التتبع إلى التطبيق

  1. افتح Controllers\HomeController.cs، واستبدل الأساليب Index وAbout وContact بالتعليمات البرمجية التالية لإضافة عبارات Trace وعبارات using لـ System.Diagnostics:

    public ActionResult Index()
    {
        Trace.WriteLine("Entering Index method");
        ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
        Trace.TraceInformation("Displaying the Index page at " + DateTime.Now.ToLongTimeString());
        Trace.WriteLine("Leaving Index method");
        return View();
    }
    
    public ActionResult About()
    {
        Trace.WriteLine("Entering About method");
        ViewBag.Message = "Your app description page.";
        Trace.TraceWarning("Transient error on the About page at " + DateTime.Now.ToShortTimeString());
        Trace.WriteLine("Leaving About method");
        return View();
    }
    
    public ActionResult Contact()
    {
        Trace.WriteLine("Entering Contact method");
        ViewBag.Message = "Your contact page.";
        Trace.TraceError("Fatal error on the Contact page at " + DateTime.Now.ToLongTimeString());
        Trace.WriteLine("Leaving Contact method");
        return View();
    }        
    
  2. أضف عبارة using System.Diagnostics; إلى أعلى الملف.

عرض إخراج التتبع محلياً

  1. اضغط F5 لتشغيل التطبيق في وضع تتبع الأخطاء.

    يكتب مستمع التتبع الافتراضي جميع مخرجات التتبع إلى نافذة الإخراج، بالإضافة إلى إخراج تتبع الأخطاء الآخر. يوضح الرسم التوضيحي التالي الإخراج من عبارات التتبع التي أضفتها إلى الأسلوب Index.

    Tracing in Debug window

    توضح الخطوات التالية كيفية عرض إخراج التتبع في صفحة ويب، دون التحويل البرمجي في وضع التصحيح.

  2. افتح ملف Web.config للتطبيق (الملف الموجود في مجلد المشروع) وأضف العنصر <system.diagnostics> في نهاية الملف قبل عنصر الإغلاق </configuration>:

    <system.diagnostics>
    <trace>
      <listeners>
        <add name="WebPageTraceListener"
            type="System.Web.WebPageTraceListener,
            System.Web,
            Version=4.0.0.0,
            Culture=neutral,
            PublicKeyToken=b03f5f7f11d50a3a" />
      </listeners>
    </trace>
    </system.diagnostics>
    

يتيح لك WebPageTraceListener عرض إخراج التتبع من خلال التصفح إلى /trace.axd.

  1. أضف عنصر تتبع ضمن <system.web> في ملف Web.config، مثل المثال التالي:

    <trace enabled="true" writeToDiagnosticsTrace="true" mostRecent="true" pageOutput="false" />
    
  2. اضغط CTRL + F5 لتشغيل التطبيق.

  3. في شريط العناوين في نافذة المستعرض، أضف trace.axd إلى عنوان URL، ثم اضغط على "إدخال" (عنوان URL مشابه ل http://localhost:53370/trace.axd).

  4. في صفحة تتبع التطبيق، انقر فوق عرض التفاصيل في السطر الأول (وليس سطر BrowserLink).

    Screenshot of the Application Trace page in a web browser showing View Details selected on the first line.

    ستظهر صفحة تفاصيل الطلب، وفي قسم معلومات التتبع سترى الإخراج من عبارات التتبع التي أضفتها إلى الأسلوب Index.

    Screenshot of the Request Details page in a web browser showing a message highlighted in the Trace Information section.

    يتوفر trace.axd محلياً فقط بشكل افتراضي. إذا أردت توفيره من تطبيق بعيد، يمكنك إضافة localOnly="false" إلى العنصر trace في ملف Web.config، كما هو موضح في المثال التالي:

    <trace enabled="true" writeToDiagnosticsTrace="true" localOnly="false" mostRecent="true" pageOutput="false" />
    

    ومع ذلك، لا ينصح بتمكين trace.axd في تطبيقات الإنتاج لأسباب أمنية. في الأقسام التالية، ستتعرف على طريقة أسهل لقراءة سجلات التتبع في تطبيق App Service.

عرض إخراج التتبع في Azure

  1. فيمستكشف الحلول، انقر بزر الماوس الأيمن فوق المشروع وانقر فوق نشر.

  2. في مربع الحوار نشر ويب، انقر فوق نشر.

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

  3. في Server Explorer، انقر بزر الماوس الأيمن فوق التطبيق وحدد عرض سجلات الدفق.

    Screenshot of Server Explorer after right-clicking your app, with View Streaming Logs selected in a new window.

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

    Screenshot of the Output window showing an example of a connection to a log-streaming service with notification lines.

  4. في نافذة المستعرض التي تعرض الصفحة الرئيسية للتطبيق، انقر فوق جهة اتصال.

    في غضون ثوان قليلة، سيظهر الإخراج من تتبع مستوى الخطأ الذي أضفته إلى الأسلوب Contact في نافذة الإخراج.

    Error trace in Output window

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

    Application Logging off

    ومع ذلك، عند تحديد عرض سجلات الدفق، عمل Visual Studio تلقائياً على تغيير تسجيل التطبيق (نظام الملفات) إلى خطأ، مما يعني أنه يتم الإبلاغ عن سجلات مستوى الخطأ. للاطلاع على جميع سجلات التتبع، يمكنك تغيير هذا الإعداد إلى مطول. عند تحديد مستوى خطورة أقل من الخطأ، يتم أيضاً الإبلاغ عن جميع السجلات لمستويات الخطورة الأعلى. لذلك عند تحديد مطول، سترى أيضا المعلومات والتحذير وسجلات الأخطاء.

  5. في Server Explorer، انقر بزر الماوس الأيمن فوق التطبيق، ثم انقر فوق عرض الإعدادات كما فعلت سابقاً.

  6. قم بتغيير تسجيل التطبيق (نظام الملفات) إلى مطول، ثم انقر فوق حفظ.

    Setting trace level to Verbose

  7. في نافذة المستعرض التي تعرض الآن صفحة جهة الاتصال، انقر فوق الصفحة الرئيسية، ثم انقر فوق حول، ثم انقر فوق جهة اتصال.

    في غضون ثوان قليلة، تعرض نافذة الإخراج جميع مخرجات التتبع الخاصة بك.

    Verbose trace output

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

ميزات نافذة الإخراج

تحتوي علامة التبويب سجلات Microsoft Azure في نافذة الإخراج على عدة أزرار ومربع نص:

Screenshot showing the buttons and text box of the Microsoft Azure Logs tab in the Output window.

تقوم بتنفيذ الوظائف التالية:

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

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

عرض سجلات خادم الويب

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

  1. في علامة التبويب تكوين Azure Web App التي فتحتها من Server Explorer، عيين سجلات خادم الويب إلى تشغيل، ثم انقر فوق حفظ.

    Enable web server logging

  2. في نافذة الإخراج، انقر فوق الزر تحديد سجلات Microsoft Azure المراد مراقبتها.

    Specify which Azure logs to monitor

  3. في مربع الحوار خيارات تسجيل Microsoft Azure، حدد سجلات خادم الويب، ثم انقر فوق موافق.

    Monitor web server logs

  4. في نافذة المستعرض التي تعرض التطبيق، انقر فوق الصفحة الرئيسية، ثم انقر فوق حول، ثم انقر فوق جهة اتصال.

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

    Web server logs in Output window

بشكل افتراضي، عند تمكين سجلات خادم الويب لأول مرة باستخدام Visual Studio، يكتب Azure السجلات إلى نظام الملفات. كبديل، يمكنك استخدام مدخل Microsoft Azure لتحديد أنه يجب كتابة سجلات خادم الويب إلى حاوية كائن ثنائي كبير الحجم في حساب تخزين.

إذا كنت تستخدم المدخل لتمكين تسجيل خادم الويب إلى حساب تخزين Azure، ثم تعطيل التسجيل في Visual Studio، عند إعادة تمكين التسجيل في Visual Studio، تتم استعادة إعدادات حساب التخزين.

عرض سجلات رسائل الخطأ التفصيلية

توفر سجلات الأخطاء التفصيلية بعض المعلومات الإضافية حول طلبات HTTP التي تؤدي إلى رموز استجابة الخطأ (400 أو أعلى). لكي تتمكن من رؤيتها في نافذة الإخراج، يجب تمكينها للتطبيق وإعلام Visual Studio بأنك تريد مراقبتها.

  1. في علامة التبويب تكوين Azure Web App التي فتحتها من Server Explorer، قم بتعيين رسائل الخطأ المفصلة إلى تشغيل، ثم انقر فوق حفظ.

    Enable detailed error messages

  2. في نافذة الإخراج، انقر فوق الزر تحديد سجلات Microsoft Azure المراد مراقبتها.

  3. في مربع الحوار خيارات تسجيل Microsoft Azure، انقر فوق جميع السجلات، ثم انقر فوق موافق.

    Monitor all logs

  4. في شريط عنوان نافذة المستعرض، أضف حرفاً إضافياً إلى عنوان URL لإحداث خطأ 404 (على سبيل المثال، http://localhost:53370/Home/Contactx)، واضغط على "إدخال".

    بعد عدة ثوان، سيظهر سجل الخطأ التفصيلي في نافذة إخراج Visual Studio.

    Detailed error log - Output window

    اضغط Control + انقر فوق الارتباط لرؤية إخراج السجل منسقاً في المستعرض:

    Detailed error log - browser window

تنزيل سجلات نظام الملفات

كما يمكن تنزيل أي سجلات يمكنك مراقبتها في نافذة الإخراج كملف .zip.

  1. في نافذة الإخراج، انقر فوق تنزيل سجلات الدفق.

    Screenshot of the Output window showing the Download Streaming Logs button highlighted.

    يتم فتح مستكشف الملفات إلى مجلد التنزيلات مع تحديد الملف الذي تم تنزيله.

    Screenshot of the Downloads folder in File Explorer with a downloaded file selected.

  2. استخرج ملف .zip، وسترى بنية المجلد التالية:

    Screenshot of the .zip file folder structure after the file has been extracted.

    • توجد سجلات تتبع التطبيق في ملفات .txt في مجلد LogFiles\Application.

    • توجد سجلات خادم الويب في ملفات .log في المجلد LogFiles\http\RawLogs. يمكنك استخدام أداة مثل محلل السجل لعرض هذه الملفات ومعالجتها.

    • توجد سجلات رسائل الخطأ التفصيلية في ملفات .html في المجلد LogFiles\DetailedErrors.

      (لا يحتوي مجلد عمليات التوزيع للملفات التي تم إنشاؤها بواسطة نشر عنصر التحكم بالمصادر على أي شيء مرتبط بنشر Visual Studio. ويتخصص مجلد Git بالتتبعات المتعلقة بنشر التحكم بالمصادر وخدمة دفق ملف السجل.)

عرض سجلات تتبع الطلبات الفاشلة

تعد سجلات تتبع الطلبات الفاشلة مفيدة عندما تحتاج إلى فهم تفاصيل كيفية معالجة IIS لطلب HTTP، في سيناريوهات مثل إعادة كتابة عنوان URL أو مشاكل المصادقة.

تستخدم تطبيقات App Service نفس وظيفة تتبع الطلبات الفاشلة التي كانت متوفرة مع IIS 7.0 والإصدارات الأحدث. ومع ذلك، ليس لديك حق الوصول إلى إعدادات IIS التي تقوم بتكوين الأخطاء التي يتم تسجيلها. عند تمكين تتبع الطلبات الفاشلة، يتم التقاط جميع الأخطاء.

يمكنك تمكين تتبع الطلبات الفاشلة باستخدام Visual Studio، ولكن لا يمكنك عرضها في Visual Studio. تعد هذه السجلات عبارة عن ملفات XML. تراقب خدمة سجل الدفق فقط الملفات التي تعد قابلة للقراءة في وضع النص العادي: على سبيل المثال ملفات .txt و.html و.log.

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

  1. في علامة التبويب التكوين في نافذة Azure Web App التي فتحتها من Server Explorer، قم بتعيين تتبع الطلبات الفاشلة إلى تشغيل، ثم انقر فوق حفظ.

    Enable failed request tracing

  2. في شريط العناوين في نافذة المستعرض التي تعرض التطبيق، أضف حرفاً إضافياً إلى عنوان URL وانقر على "إدخال" للتسبب في حدوث خطأ 404.

    ويؤدي ذلك إلى إنشاء سجل تتبع طلب فاشل، وتظهر الخطوات التالية كيفية عرض السجل أو تنزيله.

  3. في Visual Studio، في علامة التبويب التكوين في نافذة Azure Web App، انقر فوق فتح في بوابة المدخل.

  4. في صفحة إعداداتمدخل Azure لتطبيقك، انقر فوق بيانات اعتماد النشر، ثم أدخل اسم مستخدم وكلمة مرور جديدين.

    New FTP user name and password

    إشعار

    عند تسجيل الدخول، يجب عليك استخدام اسم المستخدم الكامل ويسبقه اسم التطبيق. على سبيل المثال، إذا أدخلت "myid" كاسم مستخدم وكان الموقع "myexample"، يمكنك تسجيل الدخول باسم "myexample\myid".

  5. في نافذة مستعرض جديدة، انتقل إلى عنوان URL الذي يظهر ضمن اسم مضيف FTP أو اسم مضيف FTPS في صفحة نظرة عامة لتطبيقك.

  6. سجل الدخول باستخدام بيانات اعتماد FTP التي قمت بإنشائها سابقاً (بما في ذلك بادئة اسم التطبيق لاسم المستخدم).

    سيعرض المستعرض المجلد الجذر للتطبيق.

  7. افتح مجلد LogFiles.

    Open LogFiles folder

  8. افتح المجلد المسمى W3SVC بالإضافة إلى قيمة رقمية.

    Open W3SVC folder

    يحتوي المجلد على ملفات XML لأي أخطاء تم تسجيلها بعد تمكين تتبع الطلب الفاشل، وملف XSL الذي يمكن للمستعرض استخدامه لتنسيق XML.

    W3SVC folder

  9. انقر فوق ملف XML للطلب الفاشل الذي تريد رؤية معلومات التتبع له.

    يوضح الرسم التوضيحي التالي جزءاً من معلومات التتبع لخطأ عينة.

    Failed request tracing in browser

الخطوات التالية

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

  • استكشاف أخطاء App Service وإصلاحها
  • تصحيح الأخطاء في Visual Studio
  • تصحيح الأخطاء عن بعد في Azure
  • التتبع في تطبيقات ASP.NET
  • تحليل سجلات خادم الويب
  • تحليل سجلات تتبع الطلبات الفاشلة
  • تصحيح أخطاء الخدمات السحابية

استكشاف أخطاء App Service وإصلاحها

لمزيد من المعلومات حول استكشاف أخطاء التطبيقات وإصلاحها في Azure App Service، اطلع على الموارد التالية:

للحصول على تعليمات حول سؤال محدد لاستكشاف الأخطاء وإصلاحها، ابدأ مؤشر ترابط في أحد المنتديات التالية:

تصحيح الأخطاء في Visual Studio

لمزيد من المعلومات حول كيفية استخدام وضع التصحيح في Visual Studio، اطلع على تصحيح الأخطاء في Visual Studio وتلميحات تصحيح الأخطاء باستخدام Visual Studio 2010.

تصحيح الأخطاء عن بعد في Azure

لمزيد من المعلومات حول تصحيح الأخطاء عن بعد لتطبيقات App Service وWebJobs، اطلع على الموارد التالية:

إذا كان تطبيقك يستخدم واجهة برمجة تطبيقات Azure Web أو خدمات الأجهزة المحمولة الخلفية وكنت بحاجة إلى تصحيح ذلك، فاطلع على تصحيح أخطاء.NET Backend في Visual Studio.

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

لا توجد أي مقدمة شاملة ومحدثة للتتبع ASP.NET متاحة على الإنترنت. يتمثل أفضل ما يمكنك القيام به في البدء في المواد التمهيدية القديمة المكتوبة لنماذج الويب لأن MVC لم يكن موجودا حتى الآن، وتكملة ذلك مع منشورات المدونة الأحدث التي تركز على مشكلات محددة. تتمثل بعض الأماكن الجيدة للبدء في الموارد التالية:

بالنسبة لتسجيل الأخطاء، فإن أحد البدائل لكتابة التعليمات البرمجية للتتبع الخاص بك هو استخدام إطار عمل تسجيل مفتوح المصدر مثل ELMAH. لمزيد من المعلومات، اطلع على منشورات مدونة سكوت هانسيلمان حول ELMAH.

أيضاً، لا تحتاج إلى استخدام ASP.NET أو تتبع System.Diagnostics للحصول على سجلات الدفق من Azure. تعمل خدمة سجل دفق تطبيق App Service على دفق أي ملف .txt أو .html أو .log يعثر عليه في المجلد LogFiles. لذلك، يمكنك إنشاء نظام التسجيل الخاص بك الذي يكتب إلى نظام الملفات للتطبيق، ويتم دفق الملف وتنزيله تلقائياً. كل ما عليك القيام به هو كتابة التعليمات البرمجية للتطبيق التي تنشئ الملفات في المجلد d:\home\logfiles.

تحليل سجلات خادم الويب

لمزيد من المعلومات حول تحليل سجلات خادم الويب، اطلع على الموارد التالية:

تحليل سجلات تتبع الطلبات الفاشلة

يتضمن موقع Microsoft TechNet على الويب قسم استخدام تتبع الطلبات الفاشلة، والذي قد يكون مفيداً لفهم كيفية استخدام هذه السجلات. ومع ذلك، تركز هذه الوثائق بشكل أساسي على تكوين تتبع الطلبات الفاشلة في IIS، وهو ما لا يمكنك القيام به في Azure App Service.