我正在使用REST API的客戶端。當然,服務器返回4xx響應。目前,我正在使用HttpWebRequest/HttpWebResponse來進行調用。問題是HttpWebRequest在4xx(和5xx)代碼上引發異常。我正在捕捉異常,然後(通常)根據4xx消息中的數據發送另一個請求(例如,嘗試POST,然後MERGE失敗)。4xx響應丟失連接時發出多個HTTP請求/響應
這可行,但不得不重新創建TCP/HTTP連接每次都很昂貴。我想要做的是得到一個響應流或者具有響應數據的對象,但不是會拋出異常,允許我在連接上發出另一個請求(通過保持活動)。這應該可以減少連接開銷並提高性能。
我看過的一種方法是直接使用TcpClient,但這是一個頭痛的問題,因爲我必須編寫代碼來支持分塊數據,編碼,代理等。我希望避免這種情況。
有沒有辦法阻止使用System.Net HTTP客戶端的WebExceptions?如果沒有,有沒有其他選擇(希望開源)?任何建議都非常受歡迎。
異常你肯定底層連接是實際上已關閉,而不是簡單地合併(您確實啓用了KeepAlive,對嗎?)。您可以使用Fiddler的時間軸視圖選項卡進行檢查;右鍵單擊並選擇客戶端端口映射。 – EricLaw