19-03-16, 03:53 PM
(19-03-16, 01:51 PM)طارق الدويري كتب : أولا , احب ان انوه ان الرابط لتحميل مشروعك لا يعمل .
خطأ التايم اوت -او Time Out بالإنكليزية- , وضوحاً , ينتج عن فشل خادم الموقع الإلكتروني الذي طلبته الرد خلال الوقت المحدد في كائن ال HttpWebRequest .
بعد قراءة الخطأ الذي تحاول حله , يمكنني التفكير ببعض الحلول , ولكن من المهم معرفة التالي :
- ان الخطأ هو من نوع WebException , بعد الإطلاع على موقع MSDN , توضح لي أنه لا يوجد خطأ بإسم Timeout , ولكن , سنتعامل مع المشكلة في هذا الجواب على أن سببها هو حدوث Timeout في طلب ال HTTP (ربما هذا ما أخبرك اياه ال Debugger ) .
- ان مشكلة ال 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>
مع الشكر .
السلام عليكم يا استاذ طارق الدويري
بصراحة ردك جميل جدا ومعلومات كلها قيمة جدا جدا جدا بارك الله فيك
بالنسبة لرابط التحميل اعتذر عن ذلك
لان موقعى كان اتقفل من الاستضافة
وتم نقله لاستضافة اخرى
وهذا رابط تحميل جديد
http://up.top4top.net/downloadf-78kpmd1-rar.html
انا مكنتش عارف ايه سبب المشكلة الرئيسى ولقلة خبرتى بالبرمجة قلت ان الخطا هو التيم اوت
بص يا استاذى الفاضل
البرنامج شغال تمام وكل شئ
ولكن المشكلة هى
لما بفحص ملفات ايبهات
والبرنامج يجيب اسم الموقع لكل ايبى
وارجع احفظ هذا الملف مرة تانية يطلع منه ايبهات فشل الاتصال بها
مع انها كانت لسا مفحوصة بالبرنامج وظهرت اسم الموقع لها
اتمنى ان تجرب البرنامج بنفسك او تقرا اكواد السورس كدا ربما تفهم سبب المشكلة او حلها
وهذا ملف ايبهات عشان تجرب عليهم
http://up.top4top.net/downloadf-78dspp1-rar.html
وانا فى انتظار ردك علي يا استاذ طارق

