2014-02-06 112 views
0

我在使用StreamWriter類時遇到了一些麻煩。我有大約10個需要發佈的對象,但最多隻能有一對。但是,在2個職位後,第三個不會經過並超時。我意識到這是因爲你可以擁有的最大連接數是2.但是,我很困惑,爲什麼我在2以後停止,因爲我(想)我正在關閉我的StreamWriter連接。這裏是我的代碼:StreamWriter未正確關閉?

var httpWebRequest = (HttpWebRequest)WebRequest.Create("my url"); 
httpWebRequest.ContentType = "text/json"; 
httpWebRequest.Method = "POST"; 
//var data = json data 

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
{ 
    streamWriter.Write(data); 
    streamWriter.Close(); 
} 

我以爲using語句會自動關閉它,但它沒有,所以我添加了Close()行。但是,這似乎沒有做任何事情。調試器在第三次嘗試中卡在使用線上。如果我將ServicePointManager.DefaultConnectionLimit設置爲10之類的東西,一切正常,但我很困惑爲什麼我寫的東西沒有。任何幫助,將不勝感激!

回答

1

我懷疑它更可能與您對響應做什麼有關。

using聲明將關閉StreamWriter,而且您甚至不需要明確的Close調用。但是,你也需要一個using聲明的響應:

using (var response = httpWebRequest.GetResponse()) 
{ 
    ... 
} 

如果你沒有,針對特定主機的連接池將因未閉合響應連接堵塞。

+0

我甚至沒有意識到!我還是這個新手。感謝一堆,它現在起作用! – tjboswell