Microsoft Web Platform Installer
Jeder Entwickler kennt das Problem, dass das Aufsetzen eines Entwicklungsrechners einiges an Zeit benötigt. Microsoft hat nun eine recht komfortable Lösung parat: den Web Platform Installer.
In einem einzigen Installer befinden sich der aktuelle IIS, SQL Server 2008 Express inkl. Management Studio, der Visual Web Developer (für Hobby Developer ohne VS2008) und diverse Tools.
Gute Idee! Das beschleunigt den Setup-Prozess und erspart das Suchen der einzelnen Komponenten.
ABCPdf.net – Cache Problem gelöst!
Zur Erzeugung von dynamischen PDFs aus unseren Applikationen setzen wir die WebSupergoo Komponente ABCPdf.net 6.0 ein. Das Teil erfüllt bislang die meisten unserer Anforderungen ganz gut, nur mit dem Cache hatten wir schon öfters so unsere Probleme. Der Cache kann zwar disabled werden, das hilft aber nur bedingt weiter.
Folgende Situation: ein Button feuert einen Event und löst eine Methode aus, welche ein neues MemoryStream Objekt erzeugt. ABCPdf.AddImageUrl(url) schreibt nun den Inhalt einer Url direkt in den MemoryStream, dieser wird nun über einen Buffer mit Response.BinaryWrite direkt an den Browser geschickt als downloadbares PDF. Um einen eindeutigen Request zu erstellen (Caching Workaround #1) wird an den übergebenen Url Parameter eine guid (globally unique identifier) angehängt. Anstelle von beispielsweise „http://dotlab.wordpress.com“ lautet der Request nun „http://dotlab.wordpress.com/?guid=95e23081-ee88-464c-8a9c-d6553964793d“. Das hat bis gestern ausgezeichnet funktioniert, als sich aber einige Bildobjekte auf der Ziel-Url veränderten, hat ABCPdf.net die Veränderung nicht bemerkt und weiterhin Bilder aus einem Cache in das PDF geschrieben.
Die Lösung war sehr simpel: auf der Ziel-Url werden die dynamisch geladenen Bilder nun ebenfalls mit einer guid als Parameter geladen. Beispiel:
myImage.ImageUrl = "Image1.jpg?guid=95e23081-ee88-464c-8a9c-d6553964793d";
Das scheint dann auch ABCPdf davon zu überzeugen, dass neue Daten gerendert werden wollen