2009-04-07 8 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

あなたは何か不気味なことがありますか?私はちょうどあなたがそれを持っているように正確にコードを試してみました。 –

+0

これはなぜ動作しないのか分かりません。私はちょうど新しいプロジェクトでそれを試して、それはうまく動作します。ちょうど私のVPC環境ではありません。 –

+0

これは非常に奇妙ですが、変更なしで動作します。 –

答えて

2

しかし、レスポンスストリームには既に他のもの(HTTPヘッダーなど)があります。

おそらくXMLをStringWriterに書き込んだ後、その文字列をResponseに書き込むほうがよいでしょう。

0

すなわち、唯一のPageディレクティブが残るように、コンテンツのあなたのaspxファイルをクリアすることを忘れないでください:

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

また代わりResponse.OutputStreamのResponse.Outputを使用します。

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

も同じことです。 Page_Loadにこのコードがありますが、これは影響しますか? –

+0

Page_Loadで動作します。 –

1

これを試してみてください:

XmlTextWriter xmlWriter = new XmlTextWriter(Response.OutputStream, Encoding.UTF8); 
xmlWriter.Formatting = Formatting.Indented; 
xmlWriter.WriteStartDocument(false); 
xmlWriter.WriteStartElement("userInfo"); 
関連する問題