StreamWriter未正确关闭?

时间:2014-02-06 14:20:31

标签: c# httpwebrequest streamwriter

我在使用StreamWriter类时遇到了一些问题。我需要发布大约10个对象,但最多只有一对。然而,在2个帖子之后,第三个帖子没有通过并且超时。我意识到这是因为你可以拥有的最大连接数为2.但是,我很困惑为什么我在2之后被拦截,因为我(想)我正在关闭我的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()行。但是,这似乎没有做任何事情。调试器在第三次尝试时卡在使用线上。如果我将servicePointPointManager.DefaultConnectionLimit设置为类似于10的东西,那么一切正常,但我很困惑为什么我写的不是。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

我怀疑它更可能与您使用响应所做的事情有关。

using语句将关闭StreamWriter,您甚至不需要显式的Close调用。但是, 还需要using语句来表示响应:

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

如果您没有那个,由于未公开的响应,特定主机的连接池将被连接堵塞。

相关问题