Frage

Wir haben ein VXML-Projekt, das eine dritte Partei uns mit einem Telefon-Navigationssystem zu schaffen, analysiert. Wir verlangen, daß sie einen ID-Code eingeben, um eine Nachricht zu hinterlassen, die später von unserer Firma überprüft wird.

Wir haben derzeit diese Arbeit wie folgt:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Stream m = new MemoryStream(); //Create Memory Stream - Used to create XML document in Memory
XmlTextWriter XML_Writer = new XmlTextWriter(m, System.Text.Encoding.UTF8);
XML_Writer.Formatting = Formatting.Indented;
XML_Writer.WriteStartDocument();
/* snip - writing a valid XML document */
XML_Writer.WriteEndDocument();
XML_Writer.Flush();
m.Position = 0;
byte[] b = new byte[m.Length];
m.Read(b, 0, (int)m.Length);
XML_Writer.Close();
HttpContext.Current.Response.Write(System.Text.Encoding.UTF8.GetString(b, 0, b.Length));

Ich bin nur diese app beibehalten, ich habe es nicht geschrieben ... aber das Ende Abschnitt scheint mir gewunden.

Ich weiß, dass es die Ausgabe-Stream zu nehmen und das geschriebene XML in sie füttern ... aber warum ist es zuerst die gesamte Zeichenfolge zu lesen? Ist das nicht ineffizient?

Gibt es einen besseren Weg, um den oben genannten Code zu schreiben?

War es hilfreich?

Lösung

Ja, schreiben Sie einfach direkt auf die Antwort Output (IO.StreamWriter) oder OutputStream (IO.Stream):

XmlTextWriter XML_Writer = new XmlTextWriter(HttpContext.Current.Response.OutputStream, HttpContext.Current.Response.Encoding);
//...
XML_Writer.Flush();

Andere Tipps

Danach kann ich einfach anrufen XML_Writer.Flush (), nicht wahr? Das wird die XML in den Stream spülen?

Sie können schreiben Sie direkt in den Antwortstream:

Response.Cache.SetCacheability(HttpCacheability.NoCache);

XmlWriter XML_Writer = XmlWriter.Create(HttpContext.Current.Response.Output);

So fügen Sie Einstellungen für den Schriftsteller sind Sie besser dran, die neuere mit

scroll top