2012-09-04 12 views
11

मैं रीस्टशैर का उपयोग कर एक वेब एपीआई पर कॉल कर रहा हूं और वे ठीक काम करते हैं। हालांकि, एपीआई को प्रारंभिक कॉल (चाहे जो भी कॉल हो) पर प्रतिक्रिया प्राप्त करने के लिए कभी-कभी 10 सेकंड तक लग सकते हैं। उसके बाद हर दूसरे कॉल वास्तव में जल्दी है। क्या किसी को भी यहाँ के रास्ते पता है?RestSharp में मेरा प्रारंभिक कॉल वास्तव में धीमा क्यों है? लेकिन बाद में बहुत तेज़

मैं एक WPF 4.0 आवेदन चला रहा हूँ

कोड:

var client = new RestClient(apiAddress); 
var request = new RestRequest(Method.GET); 

IRestResponse response = client.Execute(request); 
+0

यह औपचारिक रूप से कुछ फ़ायरवॉल या अन्य नेटवर्क समस्या है। आपका कोड नहीं –

+0

किसी नए ग्राहक से पहली कॉल, या पहले ताजा सर्वर पर कॉल करें? –

+0

शायद DNS समस्या। केवल आईपी के साथ प्रयास करें। – BlueM

उत्तर

13

यह सबसे अधिक संभावना नेटवर्क सेटिंग्स इस समस्या खड़ी कर रहा है। मुझे हाल ही में एक ही समस्या थी और यह पता चला कि HttpWebRequest या RestSharp का उपयोग करते समय यह प्रॉक्सी सर्वर देखने के लिए कुछ ऑटो कॉन्फ़िगरेशन का प्रयास कर रहा था।

इंटरनेट एक्सप्लोरर में नेटवर्क सेटिंग्स खोलें और स्थानीय नेटवर्क के लिए ऑटो कॉन्फ़िगरेशन अक्षम करें। मेरे मामले में इसने RestSharp में पहले अनुरोध के लिए भी देरी को हल किया।

+1

इसने समस्या को ठीक किया। मैंने इसे सही के रूप में चिह्नित किया है, हालांकि यह मेरे लिए कोई उपयोग नहीं होगा क्योंकि मैं एक वाणिज्यिक अनुप्रयोग विकसित कर रहा हूं जिसे एकाधिक कंप्यूटरों पर स्थापित किया जाना है और मैं उपयोगकर्ताओं को इस विकल्प को अक्षम करने के लिए मजबूर नहीं कर सकता। हालांकि स्पष्टीकरण के लिए धन्यवाद। –

+0

@NeilHobson क्या आपको कोई कामकाज मिला? – Sergey

+0

आप यह भी कर सकते हैं: http://stackoverflow.com/questions/2519655/httpwebrequest-is-extremely-slow – christo8989

0

यदि आप ConnectionStrings के बाद app.config में WinForms आदि का उपयोग करें:

<system.net> 
    <defaultProxy enabled="true"> 
    <proxy usesystemdefault="True"/> 
    </defaultProxy> 
</system.net> 
+0

हाय, मैंने इस कोड कॉन्फ़िगरेशन का उपयोग किया और अब यह काम करता है "कभी काम नहीं करता" –

+1

@ ओसामाखोड्रोग क्या यह काम करता है या नहीं ? "कभी काम नहीं" के साथ क्या संकेत है? – hiFI

+0

यह मेरे लिए काम करता है, मुझे लगता है कि मुख्य कथन "Winforms" है हालांकि मेरे मामले में यह एक कंसोल ऐप था। यह शायद वेब सर्वर के लिए समान नहीं है। – Jay13

2

की कोशिश की ऑटो विन्यास से छुटकारा पाने के लिए इस

System.Net.WebRequest.DefaultWebProxy = null; 
0

मैं कोशिश की थी के साथ एक प्रॉक्सी सर्वर के लिए देखने के लिए @ skrause का जवाब, लेकिन यह मेरे लिए काम नहीं था। मैं ज्यादा समय बिताता हूं, और फाइनली मैंने इसे हल किया। यह मेरा बहाना है।

public class SimpleWebProxy : IWebProxy 
{ 
    public ICredentials Credentials { get; set; } 

    public Uri GetProxy(Uri destination) 
    { 
     return destination; 
    } 

    public bool IsBypassed(Uri host) 
    { 
     // if return true, service will be very slow. 
     return false; 
    } 

    private static SimpleWebProxy defaultProxy = new SimpleWebProxy(); 
    public static SimpleWebProxy Default 
    { 
     get 
     { 
      return defaultProxy; 
     } 
    } 
} 

var client = new RestClient(); 
client.Proxy = SimpleWebProxy.Default; 
संबंधित मुद्दे