2014-02-06 70 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