我有一个从网站上检索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 \项目\原\ APP \ BIN \调试\ System.Net.ConnectStream”。
答案 0 :(得分:5)
这是问题所在:
reportXML = XDocument.Load(responseStream.ToString());
在像这样的流上调用ToString()
几乎永远不会给你任何有用的东西。如果您只想加载流的内容,请删除ToString
来电:
reportXML = XDocument.Load(responseStream);
或者,如果确实只想将其保存到磁盘,只需使用Stream.CopyTo
,而不是首先将其解析为XML。