2012-06-11 104 views
10

Tôi đang sử dụng RestSharp để tiêu thụ dịch vụ web REST và sẽ thực hiện một lượng lớn cuộc gọi trong một khoảng thời gian ngắn.Kết nối HTTP liên tục với RestSharp

Tài liệu cho API đề xuất mạnh mẽ việc sử dụng các kết nối HTTP liên tục để thực hiện việc này, tuy nhiên tôi đang cố gắng để làm việc này với RestSharp.

Tôi đã thử thêm tiêu đề "Kết nối: Tiếp tục sống" vào yêu cầu nhưng khi tôi thực hiện yêu cầu này không thành công với lỗi sau - "Keep-Alive and Close có thể không được đặt bằng thuộc tính này".

Tôi không thể sử dụng tiêu đề này với RestSharp hoặc có điều gì khác mà tôi cần làm để kích hoạt tính năng này không?

Có ai giúp được không? Cảm ơn.

+0

Đăng một số mã của bạn (để hiển thị cách bạn đang sử dụng RestSharp). Tôi đã sử dụng RestSharp khá một chút và không bao giờ gặp vấn đề với các kết nối đóng sớm. – EkoostikMartin

+0

Tôi chỉ sử dụng mã kết nối RestSharp chuẩn, với phương thức Execute chung. Để thêm tiêu đề tiếp tục, tôi chỉ đang thử request.AddHeader ("Connection", "Keep-Alive"); nhưng điều này không thành công như mô tả ở trên. –

+0

Làm thế nào bạn có thể giải quyết vấn đề này. [Tôi có cùng một vấn đề] (https://github.com/restsharp/RestSharp/issues/781) – hellboy

Trả lời

6

Để có câu trả lời hay, bạn cần đặt một câu hỏi hay. Ở đâu trong tài liệu hiện nó nói điều này? (Link/Tham khảo?) Có bao nhiêu yêu cầu là một "khối lượng lớn"? Ngoài ra, nếu bạn đăng mã của mình về cách bạn thêm Connection: Keep-Alive vào tiêu đề http của bạn, ai đó ở đây có thể nhận xét về kỹ thuật của bạn và giúp bạn với vấn đề lập trình cụ thể.

Ngoài ra, Connection: Keep-Alive có thể đã có trên HttpRequests gửi đi! Hãy khám phá bằng cách sử dụng Fiddler hoặc WireShark. Tôi đã nhìn thấy một vài bài đăng trên blog với tính năng capture của Wireshark của các yêu cầu RestSharp có tiêu đề Connection: Keep-Alive mà không cần thêm bất kỳ cấu hình nào. Ví dụ, trong khi thử nghiệm các chức năng mvc3 khác bằng cách sử dụng RestSharp như một người tiêu dùng, Jimmy Bogard nắm bắt các yêu cầu RestSharp của mình với fiddler mà đã có tiêu đề Connection: Keep-Alive.

Dường như đây cũng là hành vi mặc định cho các lớp .Net được tích hợp sẵn như System.Net.Webclient để sử dụng Connection: Keep-Alive. Tham khảo Does WebClient use KeepAlive?

Tôi nghĩ rằng việc sử dụng tiếp tục sống sẽ là nhiều hơn về mã của bạn bằng cách sử dụng RestSharp một cách tối ưu hơn là cấu hình RestSharp. Nếu bạn muốn đảm bảo kết nối của mình được tái sử dụng, bạn cần đảm bảo rằng việc sử dụng RestSharp của bạn cho phép bằng cách giữ một cá thể RestClient trong phạm vi và sử dụng lại nó trong nhiều yêu cầu đối với cùng một máy chủ.

Một lần nữa sử dụng Fiddler hoặc WireShark sẽ giúp bạn nắm bắt một số HttpRequests để phân tích.

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