2010-01-03 32 views
11

Tôi đang thực hiện một yêu cầu web Http đến một trang web có sẵn mà tôi có thể truy cập tốt, nhưng yêu cầu HTTP Web giữ thời gian ra ngoài. Có bất kỳ lý do nào tại sao mã này có thể cho phép nó hết thời gian chờ không?C# HTTP yêu cầu web giữ thời gian ra

Tôi đã thử nâng cấp cài đặt thời gian chờ nhưng vẫn tiếp tục hết thời gian chờ.

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

Trả lời

30

Bạn không đóng phản hồi trên web - nếu bạn thấy rằng yêu cầu đầu tiên hoạt động, nhưng sau đó yêu cầu không hoạt động, thì đó là vấn đề. Nó đang cố gắng sử dụng lại kết nối hiện có đến máy chủ, nhưng không thể vì bạn chưa đóng phản hồi.

Thay đổi mã của bạn để:

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

và xem giúp.

Nếu không thành công trên yêu cầu đầu tiên trước tiên, thì đó là điều gì đó khác. Trong trường hợp đó, hãy sử dụng Wireshark để xem điều gì đang xảy ra ở cấp độ mạng.

Lưu ý rằng trong mã ở trên, tôi cũng đã xóa chuyển đổi chuỗi có lợi cho việc so sánh trực tiếp mã trạng thái.

+1

Câu trả lời rất rõ ràng, súc tích; nhưng sau đó không có bất ngờ ở đó! +1 –

+0

Bạn chính xác! Cảm ơn nhiều! – Ben

+0

Có cách nào để phân tích số câu trả lời chưa được tiết lộ nổi bật không? –

Các vấn đề liên quan