2012-06-11 168 views
10

我正在使用RestSharp來使用REST Web服務,並且會在短時間內發出大量呼叫。與RestSharp的持續HTTP連接

該API的文檔強烈建議使用持久HTTP連接來做到這一點,但是我正在努力使用RestSharp來處理這個問題。

我已經嘗試在請求中添加「Connection:Keep-alive」標頭,但是當我這樣做時,請求失敗,出現以下錯誤 - 「Keep-Alive和Close可能未使用此屬性設置」。

我不能在RestSharp中使用此標題,還是有其他需要做的事情來啓用它?

任何人都可以幫忙嗎?謝謝。

+0

發佈您的一些代碼(以顯示您如何使用RestSharp)。我已經使用了RestSharp,並且從未遇到過早關閉連接的問題。 – EkoostikMartin

+0

我只是使用標準的Res​​tSharp連接代碼,使用通用的Execute 方法。要添加保持活動標題,我只是試圖request.AddHeader(「連接」,「保持活着」);但是這如上所述失敗。 –

+0

你如何解決這個問題。 [我有同樣的問題](https://github.com/restsharp/RestSharp/issues/781) – hellboy

回答

6

爲了得到一個很好的答案,你需要問一個好問題。文檔中的哪些地方會這樣說? (鏈接/參考?)有多少請求是「大量」?另外,如果您發佈了代碼,以便將Connection: Keep-Alive添加到您的http標頭中,此處的某個人可能會對您的技術發表評論,並幫助您解決特定的編程問題。

另外,Connection: Keep-Alive可能已經出現在傳出的HttpRequests上!請使用FiddlerWireShark進行檢查。我已經看到一些帶有WireShark捕獲的RestSharp請求的博文,其中Connection: Keep-Alive頭沒有任何額外的配置。例如,在使用RestSharp作爲使用者測試其他mvc3功能時,Jimmy Bogard使用已經具有Connection: Keep-Alive標頭的fiddler捕獲其RestSharp請求。

顯然它也是內置.Net類的默認行爲,如System.Net.Webclient使用Connection: Keep-Alive。參考Does WebClient use KeepAlive?

我認爲保持活力的使用將更多地關注使用RestSharp的代碼,而不是以最佳方式配置RestSharp本身。如果你想確保你的連接被重用,你需要確保你使用RestSharp的方式允許將一個RestClient實例保留在範圍內,並在對同一主機的多個請求中重複使用它。

再次使用FiddlerWireShark將幫助您捕獲一些HttpRequests進行分析。