أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

المشكلة: يحدث ThreadAbortException إذا كنت تستخدم Response.End أو Response.Redirect أو Server.Transfer

الأعراض
إذا كنت تستخدم أسلوب Response.End، أو Response.Redirect, أو Server.Transfer، يحدث استثناء ThreadAbortException. يمكنك استخدام عبارة try-catch لتصفية هذا الاستثناء.
السبب
تنهي وسيلة Response.End تنفيذ الصفحة وتبدل التنفيذ إلى حدث Application_EndRequest في مسار الحدث الخاص بالتطبيق. السطر من التعليمات البرمجية الذي يتبع Response.End لم يتم تنفيذه.

تحدث هذه المشكلة في وسائل Response.Redirect و Server.Transfer بسبب استدعاء كلا الأسلوبين لـResponse.End داخليا.
الحل
للتغلب على هذه المشكلة، اتبع إحدى الطرق التالية:
  • لـResponse.End, استدعِ وسيلة HttpContext.Current.ApplicationInstance.CompleteRequest بدلًا من Response.End لاجتياز تنفيذ التعليمة البرمجية لحدث Application_EndRequest.
  • لـ Response.Redirect, استخدم طريقة تحميل زائد، Response.Redirect(String url, bool endResponse) التي تجتاز خطأ لمعلمة endResponse لاجتياز الاستدعاد الداخلي لـ Response.End. على سبيل المثال:
      Response.Redirect ("nextpage.aspx", false);						
    إذا كنت تستخدم هذا الحل البديل، فالتعليمات البرمجية التي تتبع Response.Redirect منفذة.
  • لـ Server.Transfer، استخدم وسيلة Server.Execute بدلاً من ذلك.
تصريح
هذا السلوك مرتبط بالتصميم.
خصائص

رقم الموضوع: 312629 - آخر مراجعة: 08/30/2013 13:37:00 - المراجعة: 2.0

  • Microsoft ASP.NET 4.5
  • Microsoft ASP.NET 4.0
  • Microsoft ASP.NET 3.5
  • Microsoft ASP.NET 2.0
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • kbexcepthandling kbprb KB312629
تعليقات