2012-06-11 17 views
10

के साथ लगातार HTTP कनेक्शन मैं एक REST वेब सेवा का उपभोग करने के लिए RestSharp का उपयोग कर रहा हूं और कम समय अवधि में बड़ी मात्रा में कॉल कर रहा हूं।RestSharp

एपीआई के लिए प्रलेखन लगातार ऐसा करने के लिए लगातार HTTP कनेक्शन के उपयोग की सिफारिश करता है, हालांकि मैं RestSharp के साथ काम करने के लिए संघर्ष कर रहा हूं।

मैंने अनुरोध पर "कनेक्शन: रखें-जिंदा" शीर्षलेख जोड़ने का प्रयास किया है, लेकिन जब मैं ऐसा करता हूं तो अनुरोध निम्न त्रुटि से विफल रहता है - "इस संपत्ति का उपयोग करके रखें-जीवित और बंद नहीं किया जा सकता है।"

क्या मैं इस हेडर का उपयोग RestSharp के साथ नहीं कर सकता या क्या ऐसा करने के लिए मुझे कुछ और करने की ज़रूरत है?

क्या कोई मदद कर सकता है? धन्यवाद।

+0

अपना कुछ कोड पोस्ट करें (यह दिखाने के लिए कि आप RestSharp का उपयोग कैसे कर रहे हैं)। मैंने रेस्टशर्प का काफी उपयोग किया है और कभी-कभी कनेक्शन बंद होने में कोई समस्या नहीं थी। – EkoostikMartin

+0

मैं मानक ExSute विधि के साथ मानक RestSharp कनेक्शन कोड का उपयोग कर रहा हूं। रख-रखाव हेडर जोड़ने के लिए मैं सिर्फ अनुरोध का प्रयास कर रहा हूं। AddHeader ("कनेक्शन", "Keep-Alive"); लेकिन यह ऊपर वर्णित के रूप में विफल रहता है। –

+0

आप इस मुद्दे को कैसे हल कर सकते हैं। [मुझे एक ही समस्या है] (https://github.com/restsharp/RestSharp/issues/781) – hellboy

उत्तर

6

एक अच्छा उत्तर पाने के लिए, आपको एक अच्छा सवाल पूछने की आवश्यकता है। दस्तावेज़ीकरण में यह कहां कहता है? (लिंक/संदर्भ?) "बड़ी मात्रा" कितने अनुरोध हैं? साथ ही, यदि आप अपने कोड को Connection: Keep-Alive को अपने http शीर्षलेखों में कैसे जोड़ते हैं, तो यहां कोई व्यक्ति आपकी तकनीक पर टिप्पणी करने और विशिष्ट प्रोग्रामिंग समस्या के साथ आपकी सहायता करने में सक्षम हो सकता है।

इसके अलावा, Connection: Keep-Alive पहले से ही आउटगोइंग HttpRequests पर मौजूद हो सकता है! इसे Fiddler या WireShark का उपयोग करके देखें। मैंने RestSharp अनुरोधों के वायरशर्क कैप्चर के साथ कुछ ब्लॉग पोस्ट देखी हैं जिनके पास Connection: Keep-Alive हैडर बिना किसी अतिरिक्त कॉन्फ़िगरेशन के मौजूद है। उदाहरण के लिए, उपभोक्ता के रूप में RestSharp का उपयोग करके अन्य एमवीसी 3 कार्यक्षमता का परीक्षण करते समय, Jimmy Bogard अपने RestSharp अनुरोधों को फिडलर के साथ कैप्चर करता है जिसमें पहले से ही Connection: Keep-Alive शीर्षलेख है।

स्पष्ट रूप से Connection: Keep-Alive का उपयोग करने के लिए System.Net.Webclient जैसे नेट क्लास में निर्मित के लिए यह डिफ़ॉल्ट व्यवहार भी है। संदर्भ Does WebClient use KeepAlive?

मुझे लगता है कि जीवित रहने का उपयोग करने के लिए RestSharp का उपयोग करके अपने कोड के बारे में अधिक जानकारी होगी, यह RestSharp को स्वयं कॉन्फ़िगर करने के बारे में है। यदि आप यह सुनिश्चित करना चाहते हैं कि आपका कनेक्शन पुन: उपयोग किया गया है तो आपको यह सुनिश्चित करने की आवश्यकता है कि RestSharp का उपयोग इसके लिए एक RestClient उदाहरण को दायरे में रखकर और उसी मेजबान के विरुद्ध कई अनुरोधों पर पुन: उपयोग करके इसकी अनुमति देता है।

फिर से Fiddler या WireShark का उपयोग करके विश्लेषण के लिए कुछ HttpRequests को कैप्चर करने में आपकी सहायता मिलेगी।