2010-01-03 5 views
11

Http Webguquest'i iyi bir ziyarette bulunabileceğim bir site için yapıyorum, ancak HTTP Web isteği zaman aşımına uğramaya devam ediyor. Bu kodun neden olmaması gerektiğinde zaman aşımına izin vermesinin bir nedeni var mı?C# HTTP web isteği zaman aşımına uğramaya devam ediyor

Zaman aşımı ayarını kullanmaya çalıştım ama yine de zaman aşımı devam ediyor.

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; 
     } 

cevap

30

Kendi web yanıtını kapanış değiliz - Eğer isteklerinin ilk çift çalıştıklarını bulursanız, ancak olanlar değil yaptıktan sonra, o zaman sorun bu. Mevcut bağlantıyı sunucuya yeniden kullanmaya çalışıyor, ancak yanıtı kapatmadınız çünkü yapamazsınız.

için kodunuzu değiştirin

:

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

ve görmek eğer yardımcı olur.

Sunucuda ilk istekte başarısız oluyorsa, bu farklı bir şeydir. Bu durumda, ağ düzeyinde neler olduğunu görmek için Wireshark kullanın.

Yukarıdaki kodda, durum kodlarının doğrudan karşılaştırılması lehine dizge dönüştürmeyi de kaldırdığımı unutmayın.

+1

Çok açık, özlü bir cevap; ama sonra sürpriz yok! +1 –

+0

Haklısınız! Çok teşekkür ederim! – Ben

+0

Kapsanmamış yanıtların sayısının analiz edilmesinin bir yolu var mı? –