1

我有一个从站点检索 XML 文件的代码,所以我执行以下操作:

WebRequest request = WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "text/xml";

using (WebResponse webResponse = request.GetResponse())
{
    using (Stream responseStream = webResponse.GetResponseStream())
    {
       if (responseStream != null)
        {
            reportXML = XDocument.Load(responseStream.ToString());
        }
    }
    using (XmlWriter writer = XmlWriter.Create(@"C:\Retrieved.xml"))
    {
        reportXML.Save(writer);
    }
 }

但是我调试了应用程序,似乎我失去了这行代码的所有内容,所以我没有什么可保存的了。

Stream responseStream = webResponse.GetResponseStream())

知道为什么会这样吗?

如果我调查该对象,我会看到:

Length = 'responseStream.Length' 引发了“System.NotSupportedException”类型的异常

错误如下:

找不到文件“C:\Documents and Settings\user\My Documents\Visual Studio 2010\Projects\Proto\App\bin\Debug\System.Net.ConnectStream”。

4

1 回答 1

5

这就是问题:

reportXML = XDocument.Load(responseStream.ToString());

像这样调用ToString()流几乎不会给你任何有用的东西。如果您只想加载流的内容,请摆脱ToString调用:

reportXML = XDocument.Load(responseStream);

或者,如果您真的只是想将它保存到磁盘,只需使用它,Stream.CopyTo而不必首先将其解析为 XML。

于 2012-11-26T14:52:25.810 回答