我正在使用第三方庫進行多次http調用。通過對代碼進行反編譯,我確定它正在創建並使用原始的HttpWebRequest
,所有這些都將轉到單個URL。問題是有些請求沒有正確關閉。一段時間後,當庫調用GetRequestStream()*時,所有新的HttpWebRequest
都會永久阻塞。我確定這個阻塞是由於ServicePoint上的ConnectionLimit對於那個具有默認值2的特定主機。換句話說,庫已經打開了2個請求,然後嘗試打開第3個阻塞。ServicePoint安全檢查以防止阻止新的HttpWebRequests
我想防止這種阻塞。該庫具有相當的彈性,並且會自行重新連接,所以如果我殺死它所建立的現有連接就沒關係。問題是我沒有權限訪問該庫中的任何HttpWebRequest
或HttpWebResponse
。但是我知道它訪問的URL,因此我可以訪問ServicePoint
。
var sp = ServicePointManager.FindServicePoint(new Uri("http://UrlThatIKnowAbout.com"));
(注:保持活動是在這些HttpWebRequests啓用)
如果你解決了你的問題,請寫出你拿了別人的步驟誰可能會發現自己在今後類似的情況有幫助的解釋。謝謝。 – Sampson
@jonathan我做了一個有根據的猜測,並在解決方案中提出了我的問題中的3個步驟,並最終開始工作。什麼是混亂? – dan
你的答案不能獨立存在。你說過:「我做到了,而且有效。」讀者仍然想知道「this」和「it」是指什麼,這在刪除之前留下的評論中很明顯。請隨時寫出能夠自立的答案。謝謝。 – Sampson