我在使用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的东西,那么一切正常,但我很困惑为什么我写的不是。任何帮助将不胜感激!
答案 0 :(得分:1)
我怀疑它更可能与您使用响应所做的事情有关。
using
语句将关闭StreamWriter
,您甚至不需要显式的Close
调用。但是, 还需要using
语句来表示响应:
using (var response = httpWebRequest.GetResponse())
{
...
}
如果您没有那个,由于未公开的响应,特定主机的连接池将被连接堵塞。