2009-04-14 11 views
9

मैं सी # में एक कनेक्शन कैसे जीवित रखूं? मैं इसे सही नहीं कर रहा हूँ। क्या मुझे लगता है कि एक HttpWebRequest obj बनाने और मुझे आवश्यक किसी भी यूआरएल पर जाने के लिए इसका उपयोग करें? मैं किसी अन्य यूआरएल को देखने के लिए एक रास्ता नहीं देखता हूं तो HttpWebRequest.Create स्थिर विधि बनाएं।सी # में एक HTTP कनेक्शन जिंदा रखें?

मैं कनेक्शन कैसे बना सकता हूं, इसे जीवित रख सकता हूं, पेज पर एकाधिक पेज/मीडिया ब्राउज़ कर सकता हूं और प्रॉक्सी का समर्थन कर सकता हूं? (मुझे लगता है कि प्रॉक्सी आसान है और समर्थन लगभग मानक है?) -edit- अच्छे उत्तर। मैं दूसरे यूआरएल का अनुरोध कैसे करूं?

{ 
HttpWebRequest WebRequestObject = (HttpWebRequest)HttpWebRequest.Create("http://google.com"); 
WebRequestObject.KeepAlive = true; 
//do stuff 
WebRequestObject.Something("http://www.google.com/intl/en_ALL/images/logo.gif"); 
} 

उत्तर

19

आप HttpWebRequest.KeepAlive संपत्ति की कोशिश की है:

प्रॉक्सी के लिए, यह भी एक संपत्ति है? यह उपयुक्त Keep-Alive HTTP शीर्षलेख सेट करता है और कनेक्शन को जारी रखता है। (बेशक यह दूरस्थ वेब सर्वर द्वारा भी समर्थित और सक्षम होना चाहिए)।

MSDN पर HttpWebRequest.KeepAlive प्रलेखन राज्यों HTTP1.1 कनेक्शन के लिए सच डिफ़ॉल्ट रूप से करने के लिए सेट कर दिया जाता है कि, तो मैं सर्वर आपसे संपर्क करने के संबंध दृढ़ता की अनुमति नहीं है कोशिश कर रहे हैं पर शक।

प्रॉक्सी स्वचालित रूप से उपयोग किया जाता है और इसकी सेटिंग्स आपके सिस्टम (इंटरनेट एक्सप्लोरर पढ़ें) सेटिंग्स से ली जाती हैं। HttpWebRequest.Proxy संपत्ति के माध्यम से या एप्लिकेशन कॉन्फ़िगरेशन फ़ाइल को ट्वीव करके प्रॉक्सी सेटिंग्स को ओवरराइड करना भी संभव है (http://msdn.microsoft.com/en-us/library/kd3cf2ex.aspx देखें)।

8

सेट HttpWebRequest.KeepAlive संपत्ति True .NET बाकी की देखभाल करेगा। यह सिर्फ डेटाबेस कनेक्शन पूल है। पारदर्शी रूप से कार्य करता है।

आप नए कनेक्शन को स्वतंत्र रूप से बना सकते हैं .NET यह पता लगाएगा कि आप पहले से जुड़े सर्वर को कनेक्ट कर रहे हैं और इसका उपयोग करेंगे। यह भी आपके Net.ServicePointManager.DefaultConnectionLimit नंबर पर निर्भर करता है, यदि आप multhithreading करते हैं तो यह नए कनेक्शन स्थापित करेगा ()।

+0

मैं वास्तव में यह सच नहीं मिल रहा है:

यहाँ एक और सवाल अधिक जानकारी है कि है। .NET को HttpClient उदाहरण का पुन: उपयोग करके कनेक्शन प्रबंधित करने में सहायता की आवश्यकता है। मैं अब एक मुद्दे के माध्यम से काम कर रहा हूं जहां हजारों स्थापित अप्रयुक्त कनेक्शन हैं, क्योंकि 1-लीज लीज टाइमआउट के साथ रहते हैं और एचटीपी क्लाइंट का एक नया उदाहरण प्रति अनुरोध का उपयोग किया जाता है। हालांकि यह केवल नए एचटीपी क्लाइंट क्लास के साथ एक मुद्दा हो सकता है। –

1

मुझे एक समान समस्या थी जब HttpWebRequest.KeepAlive = सत्य जीवित रखने के लिए पर्याप्त पर्याप्त नहीं था। कनेक्शन पर रोक लगा दी के बाद ही मैं सेट request.UnsafeAuthenticatedConnectionSharing = सच और ServicePointManager.MaxServicePointIdleTime = 100000; // 0 या कम मूल्य

0

आप उपयोग कर रहे हैं से बचने के Http 1.1 आप Keep-Alive के रूप में नहीं का उपयोग करना चाहिए कनेक्शन स्पष्ट रूप से Keep-Alive है।

HttpWebRequest.KeepAlive संपत्ति सेट की जा सकती है लेकिन यदि आप एक एचटीपी 1.1 अनुरोध भेज रहे हैं तो यह वास्तव में हेडर सेट नहीं करेगा जबतक कि आप इसे बंद करने के लिए सेट न करें। is an HTTP/1.1 request implicitly keep-alive by default?

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