2010-01-03 28 views
11

पर समय निकालता रहता है मैं एक उपलब्ध साइट पर एक एचटीपी वेबरेक्वेस्ट बना रहा हूं जिसे मैं ठीक देख सकता हूं, लेकिन HTTP वेब अनुरोध समय-समय पर रहता है। क्या कोई कारण है कि यह कोड इसे समय-समय पर क्यों अनुमति दे सकता है जब इसे नहीं करना चाहिए?सी # HTTP वेब अनुरोध

मैंने टाइमआउट सेटिंग को अपनाने का प्रयास किया है, लेकिन यह अभी भी समय-समय पर जारी है।

Uri CameraUrl = new Uri("http://" + cfg_cameraIps[i]); 
    HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(CameraUrl); 
    myRequest.Timeout = 5000; 

    myRequest.Method = "HEAD"; 

    try 
    { 
     HttpWebResponse webresponse; 
     webresponse = (HttpWebResponse)myRequest.GetResponse(); 

     if (webresponse.StatusCode.ToString() == "OK") 
     { 
      continue; 
     } 

उत्तर

30

आप अपने वेब प्रतिक्रिया को बंद नहीं कर रहे हैं - अगर आप पाते हैं कि अनुरोधों के पहले दो काम करते हैं, लेकिन जो कि नहीं है के बाद, फिर यही समस्या है। यह सर्वर से मौजूदा कनेक्शन का पुन: उपयोग करने का प्रयास कर रहा है, लेकिन ऐसा इसलिए नहीं हो सकता क्योंकि आपने प्रतिक्रिया बंद नहीं की है।

करने के लिए अपने कोड में परिवर्तित करें:

using (HttpWebResponse webresponse = (HttpWebResponse) myRequest.GetResponse()) 
{ 
    if (webresponse.StatusCode == HttpStatusCode.OK) 
    { 
     continue; 
    } 
    ... 
} 

और देखते हैं कि अगर मदद करता है।

यदि यह सर्वर पर अनुरोध पहले पर विफल रहा है, तो यह कुछ अलग है। उस स्थिति में, नेटवर्क स्तर पर क्या चल रहा है यह देखने के लिए Wireshark का उपयोग करें।

ध्यान दें कि उपरोक्त कोड में मैंने स्टेटस कोड की तुलना करने के पक्ष में स्ट्रिंग रूपांतरण भी हटा दिया है।

+1

एक बहुत स्पष्ट, संक्षिप्त उत्तर; लेकिन फिर वहां कोई आश्चर्य नहीं! +1 –

+0

आप सही हैं! आपका बहुत बहुत धन्यवाद! – Ben

+0

क्या बकाया प्रतिक्रियाओं की संख्या का विश्लेषण करने का कोई तरीका है? –

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