2016-01-19 17 views
13

tình Odd tôi có ở đây và tiếc là tôi không hiểu nhiều về phía mạng Windows thứ bên ngoài của netstat:HttpWebRequests sử dụng công việc WebProxy và sau đó thất bại sau thời gian

Vì vậy, tôi đã một proxy mà tôi đã cấu hình trong trình duyệt của tôi (Firefox 42) và đang chạy một ứng dụng đơn giản chạy vòng qua các URL để gọi chúng qua proxy đó. Proxy này có thông tin đăng nhập để sử dụng nó và tôi biết proxy hoạt động. Đây là một hộp Windows 7.

Vì vậy, tại một số điểm trong quá trình này, sau đây sẽ xảy ra:

  1. trình duyệt gọi chỉ thời gian ra. Nó không đòi hỏi bằng chứng. (khi vấn đề biến mất, nó bắt đầu yêu cầu thông tin đăng nhập một lần nữa).
  2. cuộc gọi trong thời gian chờ hồ sơ không có vấn đề gì thời gian chờ là (7 giây, 20 giây, vv)

Tôi đã xác nhận như sau:

  1. Trong ứng dụng .net, tôi 100 % biết tôi đang đóng mọi đối tượng mạng và thậm chí còn hủy bỏ đối tượng yêu cầu sau khi tôi đọc phản hồi .
  2. Sau một khoảng thời gian nhất định mà không có bất kỳ cuộc gọi nào, sự cố sẽ biến mất.
  3. Khi tôi sử dụng proxy này trên một máy chủ khác, nó 100% hoạt động. Vì vậy, tôi biết nó liên quan đến máy chủ tôi đang sử dụng và địa chỉ IP proxy .
  4. Tôi đã xem trình quản lý tài nguyên và không có nhiều kết nối TCP đang hoạt động mở. Mặc dù tôi không biết nếu đó có nghĩa là bất cứ điều gì.
  5. Nếu tôi sử dụng một proxy khác, proxy đó hoạt động. Nó giống như nó là IP cụ thể, đó là bối rối tôi bởi vì nó chỉ là một đối tượng proxy web trong mã.

Điều gì sẽ gây ra điều này? Nó thường xảy ra sau 4-7 cuộc gọi với proxy và giải phóng vấn đề sau 30-40 phút.

Sửa 7:

Cũng xảy ra với trường hợp AWS. Đã thử cách tiếp cận đó. zzz ...

Sửa 6:

Không đi với một khởi động lại máy chủ một trong hai. Bạn có thể khởi động lại và sau 15 phút SAME proxy lần. Cuối cùng hoạt động trở lại.

Sửa 5:

Đã viết một bài kiểm tra tương tự với Java và Python. Cùng một kết quả.

Sửa 4: Đây là cách hoạt động:

Call to Proxy 1... Good! 
Call to Proxy 2... Good! 
Call to Proxy 3... Good! 
Call to Proxy 4... Good! 
Call to Proxy 1... Good! 
Call to Proxy 2... Good! 
Call to Proxy 3... Good! 
Call to Proxy 4... Good! 
Call to Proxy 1... Timeout... 
Call to Proxy 2... Good! 
Call to Proxy 3... Good! 
Call to Proxy 4... Good! 
Call to Proxy 1... Timeout... 
Call to Proxy 2... Good! 
Call to Proxy 3... Good! 
Call to Proxy 4... Good! 
Call to Proxy 1... Timeout... 
Call to Proxy 2... Good! 
Call to Proxy 3... Good! 
Call to Proxy 4... Good! 
Call to Proxy 1... Timeout... 
Call to Proxy 2... Good! 
Call to Proxy 3... Good! 
Call to Proxy 4... Good! 
Call to Proxy 1... Timeout... 
Call to Proxy 2... Good! 
Call to Proxy 3... Good! 
Call to Proxy 4... Good! 
Call to Proxy 1... Timeout... 
Call to Proxy 2... Good! 
Call to Proxy 3... Good! 
Call to Proxy 4... Good! 
Call to Proxy 1... Timeout... 
Call to Proxy 2... Good! 
Call to Proxy 3... Good! 
Call to Proxy 4... Good! 
Call to Proxy 1... Timeout... 
Call to Proxy 2... Good! 
Call to Proxy 3... Good! 
Call to Proxy 4... Good! 
Call to Proxy 1... Timeout... 
Call to Proxy 2... Good! 
Call to Proxy 3... Good! 
Call to Proxy 4... Good! 
Call to Proxy 1... Timeout... 
Call to Proxy 2... Good! 
Call to Proxy 3... Good! 
Call to Proxy 4... Good! 
Call to Proxy 1... Good! 
Call to Proxy 2... Good! 
Call to Proxy 3... Good! 
Call to Proxy 4... Good! 

Sửa 3: Những câu hỏi này dường như là rất giống nhau: Http Post WebRequest getting timed out

HttpWebRequest and GetResponse hangs after 1 request; other solutions doesn't work for me

WebRequest.GetResponse locks up?

HttpWebRequest times out on second call

Chỉnh sửa 2: Nhìn vào Wireshark, tôi thấy truyền TCP trong thông tin cho proxy bị ảnh hưởng. Nhưng điều đó không xảy ra với các proxy khác cùng một lúc? Vì vậy, đó là đến từ máy chủ proxy chính nó? Nó không có ý nghĩa với tôi vì tôi thậm chí không nhận được phản hồi và yêu cầu thậm chí không được xử lý.

Chỉnh sửa: Thêm mã cho cuộc gọi trong mã. Phương pháp này được gọi là trong một vòng lặp trong khi lặp đi lặp lại:

  String html = null; 

     HttpWebRequest request = null; 
     WebProxy webProxy = null; 

     try 
     { 
      request = (HttpWebRequest)WebRequest.Create(url); 

      webProxy = new WebProxy(proxyIP, proxyPort); 
      webProxy.Credentials = new NetworkCredential(proxyUser, proxyPass); 

      request.Proxy = webProxy; 
      request.KeepAlive = false; 
      request.Timeout = 5000; 
      request.ReadWriteTimeout = 5000; 
      request.Method = "GET"; 
      request.UserAgent = generateAgentString(); 

      using (WebResponse resp = (WebResponse)request.GetResponse()) 
      { 
       using (Stream strm = resp.GetResponseStream()) 
       { 
        StreamReader reader = new StreamReader(strm, Encoding.UTF8); 

        try 
        { 
         html = reader.ReadToEnd(); 
        } 
        catch 
        { 
         Console.WriteLine("Failed"); 
         html = null; 
        } 
        finally 
        { 
         strm.Flush(); 
         reader.BaseStream.Dispose(); 
         reader.Dispose(); 
         strm.Dispose(); 
         resp.Dispose(); 
        } 
       } 
      } 

      if (request != null) 
      { 
       request.Abort(); 
      } 
     } 
     catch(Exception e) { Console.WriteLine(e); } 
+0

Một số điều có thể xảy ra. Bạn có thể có một va chạm trên mạng của bạn hoặc một chuyển đổi bị lỗi để gói tin không bao giờ đến được proxy hoặc thay vì bất kỳ vấn đề nào trên đường tới máy chủ mà bạn đang nói đến. Tôi muốn biết ngoại lệ thực tế bạn nhận được là gì. Và ngoại lệ bên trong nếu bạn có bất kỳ. Thứ hai nếu bạn có thể chụp một yêu cầu không thành công trong công cụ Wireshark có thể cho biết điều gì đang xảy ra. – fhogberg

+0

Vì vậy, bỏ qua mã của bạn, khi bạn thiết lập trình duyệt thực tế của bạn để sử dụng proxy này nó vẫn thỉnh thoảng đôi khi ra? Bạn có đang viết mã cho proxy này không và bạn đang cố gắng xác định lý do tại sao nó có vấn đề? Có vẻ như sự cố với mã trong máy chủ proxy không quản lý tài nguyên mạng đúng cách. –

+0

Vâng - Tôi đã thiết lập proxy trong trình duyệt BOTH trên máy chủ mã đang chạy (cũng dẫn đến thời gian chờ) và trên một máy chủ khác ngoài mạng (kết quả là cuộc gọi thành công). – user2124871

Trả lời

1

Sau nhiều đào - Tôi quay trở lại với các nhà cung cấp ủy quyền một lần nữa với một loạt các dấu vết thông tin và kết quả đào và ... một cách kỳ diệu ... họ đã quyết định rằng họ thực sự có những hạn chế mà họ chưa tiết lộ cho người mua.

Shocker. Tôi bực bội hơn tôi đã đi xa đến thế này sau khi thảo luận với họ và nhận được một hóa đơn sạch sẽ về sức khỏe.

Nếu có ai cần đề xuất nhà cung cấp không sử dụng :)

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