StreamReader问题

时间:2011-07-04 15:19:34

标签: c# exception streamreader

我之前试图打破我新制作的servlet并最终破坏了我自己的应用程序,我希望我现在没有烦恼!

response = (HttpWebResponse)request.GetResponse();
reader = new StreamReader(response.GetResponseStream());
String streamedXML = reader.ReadToEnd(); // 
XmlDocument doc = new XmlDocument();
doc.LoadXml(streamedXML);

如果我打开10个左右的窗口,那么快速从我的servlet请求数据(这是相同的10个窗口,返回相同的数据)然后我得到一个xml异常被抛出;

Unexpected end of file has occurred. The following elements are not closed:

问题是,如果我一次运行这个,或者请求之间有很大差距,那么如果完成正常。这是因为我的streamreader 被请求过度并在其他人完成之前启动新的?如果是这样,是否有更好的方法来编写这些数据?

感谢。

3 个答案:

答案 0 :(得分:4)

您可以尝试修复此代码或将其留给专家并使用WebClient:

using (var client = new WebClient())
{
     string streamedXML = client.DownloadString(sourceUrl);
     ...

}

我个人会使用XDocument代替XmlDocument,但这取决于。

答案 1 :(得分:2)

StreamReader并没有被淹没。 (它只能阻止或提高IO异常/内存不足异常)

但是,它正在与之交谈的服务器似乎不堪重负。

使用fiddler或服务器日志

查找

答案 2 :(得分:1)

您可以从正确处理所有内容开始,看看是否有帮助:

using(response = (HttpWebResponse)request.GetResponse())
using(reader = new StreamReader(response.GetResponseStream()))
{
    String streamedXML = reader.ReadToEnd(); // 
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(streamedXML);
}