سؤال

ولدي تطبيق ويب الذي هو الاقتراع خدمة على خادم آخر على شبكة الإنترنت. يقع الملقم على نفس الشبكة، وتتم الإشارة من قبل IP الداخلي، يعمل على المنفذ 8080.

وكل 15 ثانية، يتم إرسال طلب بها، والتي يتلقى استجابة أكس بمعلومات مهمة. 95٪ من الوقت، وهذا يعمل بشكل جيد، ولكن في أوقات عشوائية، وطلب إلى الملقم لاغيا، وتقارير "رد أغلقت بالقوة المضيف البعيد."

وتبين من هذه المسألة، وتعيين آخرين KeepAlive = كاذبة. وهذا لم تحل هذه القضية. هو خادم الويب تشغيل الصافي 3.5 SP1.

Uri serverPath = new Uri(_Url);

// create the request and set the login credentials
_Req = (HttpWebRequest)WebRequest.Create(serverPath);
_Req.KeepAlive = false;
_Req.Credentials = new NetworkCredential(username, password);
_Req.Method = this._Method;

والدعوة إلى الاستجابة:

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
_ResponseStream = response.GetResponseStream();

وطريقة لذلك هو GET. حاولت تغيير المهلة، ولكن الافتراضية هي كبيرة بما يكفي لتأخذ ذلك في الحسبان.

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

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

المحلول

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

نصائح أخرى

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

وتعيين الخاصية مهلة من وجوه FtpWebRequest يتم إلى الحد الأقصى حاولت ذلك مع GB الملف 4 وانها تعمل الكبير.

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