2009-04-07 10 views
0

Ich versuche, XML zu generieren und ich begegnen diese Ausnahme:Write() throws InvalidOperationException

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

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

Es gibt mir eine Ausnahme:

WriteStartDocument needs to be the first call.

Aber wie Sie sehen können, habe ich habe zuerst WriteStartDocument() aufgerufen!

Irgendwelche Ideen?

+0

Sie haben etwas seltsam dort los? Ich habe gerade den Code genau so ausprobiert, wie du ihn hast und es funktioniert gut, auch wenn ich vorher etwas an Response schreibe. –

+0

Ich habe keine Ahnung, warum das nicht funktioniert. Ich habe es gerade an einem neuen Projekt versucht und es funktioniert gut. Nur nicht in meiner VPC-Umgebung. –

+0

Das ist sehr seltsam, es funktioniert jetzt ohne Änderungen. –

Antwort

2

Es gibt jedoch bereits andere Dinge im Antwortstream (z. B. HTTP-Header).

Es ist wahrscheinlich besser, XML in einen StringWriter zu schreiben und dann die Zeichenfolge in Response zu schreiben.

0

Vergessen Sie nicht, Ihre aspx Datei von Inhalten zu löschen, so dass nur die Page-Direktive bleibt, das heißt:

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

Auch Response.Output anstelle von Response.OutputStream:

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

immer noch das Gleiche. Ich habe diesen Code in der Page_Load, würde dies beeinflussen? –

+0

Es funktioniert für mich in Page_Load. –

1

Versuchen Sie mit dieser:

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