我正确使用streamwriter类遇到了一些麻烦。我需要发布大约10个对象,但最多只有几个对象。但是,经过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();
}
我认为使用的语句会自动关闭,但事实并非如此,因此我添加了Close()行。但是,这似乎没有做任何事情。调试器被困在第三次尝试的使用线上。如果我将ServicePointManager.defaultConnectionLimit设置为10之类的东西,那么一切都有效,但是我很困惑为什么我写的东西没有。任何帮助将不胜感激!
我怀疑这与您使用响应。
的可能性更有可能 using
语句将关闭StreamWriter
,您甚至不需要明确的Close
调用。但是,您也需要 using
的响应语句:
using (var response = httpWebRequest.GetResponse())
{
...
}
如果您没有,则特定主机的连接池由于未挂起的响应而被连接堵塞。