2013-11-20 58 views
1

我已經得到的URL中傳遞,基本上從列表中檢索字符串內容很簡單的方法,一個插座:的操作嘗試的東西,是不是HttpClient的

foreach (var url in urls) 
{ 
    var content = _httpClient.GetStringAsync(url).Result; 
} 

間歇,我得到以下例外:

的操作嘗試的東西,不是一個套接字

我懷疑我跑出來的連接? 如果存在一些網絡延遲(每個網址需要一秒左右纔會返回),我不會收到此錯誤。

有什麼辦法可以防止這種情況發生?

+0

嗨,你解決了這個問題嗎? – Meryovi

回答

0

根據當前線程同步上下文的不同,使用.Result會導致問題。但是,假設.Result不會導致問題,那麼會有一個屬性限制允許的同時連接數。但是,除非你明確地設置它,否則有時它實際上不會做任何事情,並且你可以很容易地讓HttpClient嘗試做出100個同時請求。

所以,嘗試加入這一行,

ServicePointManager.DefaultConnectionLimit = ServicePointManager.DefaultConnectionLimit; 

我知道它看起來愚蠢的,但它實際上將限制併發連接數爲2。這可能會阻止任何奇怪的問題,你所看到的。

相關問題