Html-Ausgabe einer Seite einlesen
Das Auslesen der Html-Ausgabe einer ASPX-Seite. Was zunächst ein wenig seltsam klingt wird doch häufiger benötigt, als im ersten Moment vermutet. Ein konkreter Anwendungsfall wäre z.B. das verschicken einer Html-Email. Der Body der Email besteht - wie der Name schon sagt - aus Html, welcher vorher generiert werden muss. Das Verschicken einer Bestellbestätigung in einem Onlineshop, welches eine Auflistung aller bestellten Artikel enthält ist ein häufiges Anwendungsbeispiel. Wichtig an dieser Stelle ist das keine neue Session durch das Einlesen entsteht und somit der bestellt Warenkorb aus anderer Quelle gelesen werden muss.
Um dieses Problem zu umgehen bietet sich die Methode Server.Execute() an. Mit Hilfe des StreamWriter Objekts kann die Ausgabe umgeleitet und direkt in einem String gespeichert werden. Im Beispiel wird eine Seite mit dem Namen MailBody.aspx eingelesen, die die aktuelle Uhrzeit in ein Label schreibt.
protected void bttGetPageOutput_Click(object sender, EventArgs e) { string html = GetPageOutput("MailBody.aspx"); } public string GetPageOutput(string file) { //Enthält später das Html string output = String.Empty; //Pfad kompletieren file = Path.Combine(Request.ApplicationPath, file); //Liest das Html ein StringWriter sw = new StringWriter(); try { Server.Execute(file, sw); output = sw.ToString(); } catch (Exception ex) { //System.Diagnostics.Debug.Assert(false, ex.Message); output = null; } return output; }
Sicherlich gibt es noch andere Wege um die Ausgabe einzulesen. Die oben beschriebene ist jedoch sehr leicht umzusetzen und beinhaltet nur wenig Code.
Das Beispielprojekt findet sich unter der Url:
http://www.veloursnebel.de/Code/GetPageOutput.zip

Hallo Kai,
das ist mal ein kurzes Beispiel.
Ich konnte mal anhand eines längeren VB .NET Beispiels das einlesen in einen string beobachten.
Dies wurde aber auf eine längere und umständlichere Weise gemacht.
Mit freundlichen Grüßen
Martin M.