2011-09-19 17 views
10

के लिए मैं एकाधिक WebRequest भेजना चाहता हूं। मैंने ऐसा करने के लिए Parallel.For लूप का उपयोग किया लेकिन लूप एक बार चलता है और प्रतिक्रिया मिलने के दौरान दूसरी बार त्रुटि देता है।समांतर में एकाधिक WebRequest भेजें।

त्रुटि:

The operation has timed out

कोड:

Parallel.For(0, 10, delegate(int i) { 
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(
     new Uri("http://www.mysite.com/service")); 

    string dataToSend = "Data"; 
    byte[] buffer = System.Text.Encoding.GetEncoding(1252). 
     GetBytes(dataToSend); 
    request.Method = "POST"; 
    request.ContentType = "application/x-www-form-urlencoded"; 
    request.ContentLength = buffer.Length; 

    request.Host = "www.mysite.com"; 

    Stream requestStream = request.GetRequestStream(); 
    requestStream.Write(buffer, 0, buffer.Length); 
    requestStream.Close(); 

    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
}); 
+2

यह आपको एक त्रुटि संदेश देता है? वास्तव में? और क्या कोई विशेष विशेष प्रश्न है जिसे आप पूछना चाहते हैं? –

+0

और त्रुटि है ...? – Icarus

+0

अपवाद क्या है, यह कहां होता है? क्या आप वाकई सर्वर का समय समाप्त नहीं कर रहे हैं? –

उत्तर

10

सबसे अधिक संभावना समस्या यह है कि आप response.Close() कॉल करने के लिए जाने के बाद प्रतिक्रिया संसाधन संपन्न हो रहे हैं की जरूरत है।

11

जिम मिशेल ने प्रतिक्रिया के करीब कॉल करने के बारे में क्या कहा, इसके अलावा, आपको डिफ़ॉल्ट रूप से उसमें कारक करने की भी आवश्यकता है, .NET एक डोमेन को केवल दो सक्रिय HTTP कनेक्शन प्रति डोमेन पर सीमित करता है। इसे बदलने के लिए आप System.Net.ServicePointManager.DefaultConnectionLimit प्रोग्रामेटिक रूप से सेट कर सकते हैं या <system.net><connectionManagement> कॉन्फ़िगरेशन सेक्शन का उपयोग करके कॉन्फ़िगरेशन के माध्यम से एक ही चीज़ सेट कर सकते हैं।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^