2009-04-07 106 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");