2009-04-07 105 views
0

我试图生成XML,我会遇到这样的例外:WriteStartDocument()抛出InvalidOperationException异常

XmlTextWriter xmlWriter = new XmlTextWriter(Response.OutputStream, Encoding.UTF8); 

xmlWriter.WriteStartDocument(); 
xmlWriter.WriteStartElement("userInfo"); 

它给了我一个例外:

WriteStartDocument needs to be the first call.

但正如你所看到的,我确实先调用WriteStartDocument()!

任何想法?

+0

你有什么奇怪的事情呢?我刚刚尝试了代码,就像你有它,并且它工作正常,即使我事先给Response写了一些东西。 – 2009-04-07 16:01:25

+0

我不知道为什么这不起作用。我只是在一个新项目上尝试过,它运行良好。只是不在我的VPC环境中。 – 2009-04-07 16:19:06

回答

2

但是在响应流中已经有其他的东西(例如HTTP标头)。

可能最好将XML写入StringWriter,然后将字符串写入Response。

0

所以只有Page指令是左,即不要忘记清除的内容您的aspx文件:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %> 

还可以使用Response.Output代替Response.OutputStream:

XmlTextWriter xmlWriter = new XmlTextWriter(Response.Output); 
xmlWriter.WriteStartDocument(); 
xmlWriter.WriteStartElement("userInfo"); 
xmlWriter.WriteEndElement(); 
1

试试用这个:

XmlTextWriter xmlWriter = new XmlTextWriter(Response.OutputStream, Encoding.UTF8); 
xmlWriter.Formatting = Formatting.Indented; 
xmlWriter.WriteStartDocument(false); 
xmlWriter.WriteStartElement("userInfo");