سؤال

الأسئلة تقول كل شيء، خذ هذا المثال للكود:

<ul id="css-id">
    <li>
    <something:CustomControl ID="SomeThingElse" runat="server" />
    <something:OtherCustomControl runat="server" />
    </li>
</ul>

الآن، إذا حدث خطأ ما في مكان ما داخل عناصر التحكم هذه (الموجودة في صفحة رئيسية)، فسوف يقومون بإزالة الموقع بأكمله، فكيف يمكن للمرء اكتشاف هذه الاستثناءات؟

هل كانت مفيدة؟

المحلول

يمكنك التقاط كافة الاستثناءات التي لم تتم معالجتها في مكان آخر في صفحة/فئة Global.asax.ينظر الى:

protected void Application_Error(Object sender, EventArgs e)

طريقة.

نصائح أخرى

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

  • استخدم القسم الموجود في web.config الخاص بك لإظهار رسالة سهلة الاستخدام
  • في Global.asax الخاص بك - أو معالج مخصص - اكتشف الاستثناء الذي لم تتم معالجته والتفاعل وفقًا لذلك - مثله

أفضل حل

  • تأكد من أن عناصر التحكم الخاصة بك لا تطرح استثناءات غير معالجة!

أضف global.asax وقم بتنفيذ معالج Application_Error.استخدم الدالة Server.GetLastError() للحصول على مؤشر الاستثناء الذي تم طرحه.

استخدام الأسلوب global.asax Application_Error، كما هو موضح في كيفية إنشاء صفحات مخصصة للإبلاغ عن الأخطاء في ASP.NET باستخدام Visual C# .NET.

سيكون النهج البديل هو استخدام أ وحدة HTTP;وهذا يمنحك المزيد من المرونة (يمكنك التعامل مع الأخطاء من تطبيقات متعددة، على سبيل المثال).

هل تريد التقاط الاستثناء والتعامل معه؟

أو هل تريد منع شاشة الموت الصفراء؟إذا كنت تحاول منع شاشة الموت الصفراء، فانظر إلى كيفية التعامل مع هذه المشكلة Error الحدث على HttpApplication (وبعبارة أخرى، في Global.asax الخاص بك).

راجع صفحة MSDN التالية لمزيد من التفاصيل:http://msdn.microsoft.com/en-us/library/system.web.httpapplication.error.aspx

وتحديدا هذه الفقرة:

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top