تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
مشكلة التيم اوت time out Http Web Request
#13
أولا , احب ان انوه ان الرابط لتحميل مشروعك لا يعمل  .



خطأ التايم اوت -او Time Out بالإنكليزية- , وضوحاً , ينتج عن فشل خادم الموقع الإلكتروني الذي طلبته الرد خلال الوقت المحدد في كائن ال HttpWebRequest .



بعد قراءة الخطأ الذي تحاول حله , يمكنني التفكير ببعض الحلول , ولكن من المهم معرفة التالي :



  1.  ان الخطأ هو من نوع WebException , بعد الإطلاع على موقع MSDN , توضح لي أنه لا يوجد خطأ بإسم Timeout  , ولكن , سنتعامل مع المشكلة في هذا الجواب على أن سببها هو حدوث Timeout في طلب ال HTTP (ربما هذا ما أخبرك اياه ال Debugger ) .
  2.  ان مشكلة ال Timeout تعتمد على قدرة خادم الموقع الإلكتروني الرد في وقت محدد , يبدو لي أنه لابد من الأخذ بعين الإعتبار ان الخوادم قد تكون مشغولة احياناً (حسناً , هذا لايحدث مع المواقع الكبرى ) مما لا يمكنها من الرد بالسرعة المطلوبة , وقد تكون في احيان اخرى تعمل بشكل مستقر وسريع  , لذا لا يمكن أبداً ايجاد حل يغنيك عن المحاولة عدة مرات في اوقات متفرقة لتقليص لائحة ال timeout.txt التي ذكرتها بسؤالك قدر الإمكان .




بناءاً على هذا , اقترح الحلول التالية :





قم بزيادة قيمة ال Timeout للكائن HttpWebRequest :
يمكنك القيام بذلك عن طريق الخاصة Timeout للكائن HttpWebRequest 

مثال توضيحي :


كود :
HttpWebRequest myHttpRequest = (HttpWebRequest)WebRequest.Create("http://www.google.com/");
myHttpRequest.Timeout = 200000;


القيمة الإفتراضية هي : 100,000 Millisecond , اي 100 ثانية .
ولكن , دعنا نواجه الواقع , اذا لم يستطع الخادم الرد خلال مئة ثانية , هل يجب علينا التوقع انه سوف يرد في اي وقت قريب ؟ 
لا اعتقد ذلك , في أغلب الأحيان هذا يعني ان الخادم لا يعمل في الوقت الحالي .

المرجع :  HttpWebRequest.Timeout Property

الإقتراح الثاني :

قم بإتمتة عملية إعادة إرسال الطلبات التي ستنفذت الوقت المسموح لها :

قم بتسجيل كل عنوان IP يستنفذ الوقت المحدد لطلبه , وقم بإعادة المحاولة لعدد محدد من المرات .
إلتقط كل كائن HttpWebRequest يرمي خطأ بسبب إستنفاذ الوقت , يمكنك ايجاد مساعدة في فعل هذا هنا .
ضعهم في مصفوفة , در على كل عنصر فيهم وقم بالإجراءات المناسبة لإعادة إرسال الطلب الى عنوان الايبي الذي سبق ان استنفذ .
يمكنك استخدام نوع المصفوفة 
List<HttpWebRequest> 
للمزيد من المعلومات عن المصفوفات من نوع 
List<T>
حيث T كانت في هذا المثال HttpWebRequest   

راجع التوثيق الرسمي لها على موقع Microsoft على الرابط التالي 
System.Collections.Generic.List<T>


مع الشكر .
الرد }}}
تم الشكر بواسطة: الماجيك مسعد


الردود في هذا الموضوع
RE: مشكلة التيم اوت time out Http Web Request - بواسطة طارق الدويري - 19-03-16, 01:51 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] مشكلة في مؤشر بايثون reem.564 0 262 08-05-25, 05:51 AM
آخر رد: reem.564
  [C#.NET] مشكلة عند عمل ال dataSet لعمل تقرير باستخدام ال Report Viewer ؟ Ashraf Baraka 0 322 04-12-24, 02:21 AM
آخر رد: Ashraf Baraka
  [C#.NET] مساعدة في مشكلة سورس كود kamel1978 5 1,010 30-11-24, 02:32 PM
آخر رد: altoki939
  مشكلة في اتصال سيد أحمد 2 434 24-09-24, 01:34 AM
آخر رد: Taha Okla
  [C#.NET] مشكلة حجم الادوات عند برمجة واجهات الويندوز Ahmed Alsharafi 1 463 03-08-24, 08:50 AM
آخر رد: WAEL ABED
Star [سؤال] مشكلة في السحب والأفلات داخل الفورم عند التصميم reduouo 1 622 02-03-24, 02:39 AM
آخر رد: Taha Okla
  مشكلة في المشاركة الدولية او خارج الشبكة issamsaid 1 927 22-11-23, 03:03 AM
آخر رد: HASAN6.0
  [تم الحل] مشكلة الاتصال بقاعده بيانات SQL على الشبكة maxruined 5 5,185 08-11-23, 01:00 AM
آخر رد: الحزين اليماني
  مشكلة في كلاس سطور الحياة 3 1,141 06-06-23, 09:47 AM
آخر رد: fouadhdfouad
  [سؤال] مشكلة في جملة التحديث سطور الحياة 4 1,389 02-06-23, 01:02 PM
آخر رد: سطور الحياة

التنقل السريع :


يقوم بقرائة الموضوع: