WriteStartDocument () создает исключение InvalidOperationException - PullRequest
0 голосов
/ 07 апреля 2009

Я пытаюсь сгенерировать XML и сталкиваюсь с этим исключением:

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

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

Это дает мне исключение:

WriteStartDocument needs to be the first call.

Но, как вы можете видеть, я сначала вызвал WriteStartDocument ()!

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 07 апреля 2009

Однако в потоке ответов уже есть другие вещи (например, заголовки HTTP).

Возможно, лучше написать XML для StringWriter, а затем записать строку в Response.

1 голос
/ 10 октября 2011

Попробуйте использовать это:

XmlTextWriter xmlWriter = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.WriteStartDocument(false);
xmlWriter.WriteStartElement("userInfo");
0 голосов
/ 07 апреля 2009

Не забудьте очистить ваш aspx-файл содержимого, чтобы осталась только директива Page, т.е.

<%@ 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();
...