【问题标题】:StreamWriter not closing correctly?StreamWriter 没有正确关闭?
【发布时间】:2014-03-03 13:10:18
【问题描述】:

我在正确使用 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() 行。然而,这似乎没有任何作用。调试器在第三次尝试时卡在 using 行。如果我将ServicePointManager.DefaultConnectionLimit 设置为10,一切正常,但我很困惑为什么我所写的没有。任何帮助将不胜感激!

【问题讨论】:

    标签: c# httpwebrequest streamwriter


    【解决方案1】:

    我怀疑这更有可能与您对响应的操作有关。

    using 语句将关闭StreamWriter,您甚至不需要显式调用Close。但是,您需要一个using 声明来响应:

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

    如果您没有那个,则特定主机的连接池将由于未关闭的响应而被连接阻塞。

    【讨论】:

    • 我什至没有意识到这一点!我还是新手。非常感谢,现在可以使用了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 2012-10-30
    • 2020-05-21
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多