Nu har jeg endelig efter at have skubbet problemet i næsten 3 år, igennem 2 jobs, løst problemet med at jeg ikke har kunne streame en PNG ud på en HTTP Stream (GDI+ har givet en intern framework fejl).
Løsningen skal åbenbart findes i hvordan PNG formattet virker – hele PNGen skal være genereret før den kan skrives til en stream.
Til at sikre dette kan man skrive PNG’en til en MemoryStream, og derefter skrive den MemoryStream til Response.OutputStream.
AsyncButtonResult async = result as AsyncButtonResult;
using (MemoryStream ms = new MemoryStream())
{
async.img.Save(ms, ImageFormat.Png);
ms.WriteTo(async.context.Response.OutputStream);
}
Kode eksemplet ovenover er fra en IHttpAsyncHandler der genererer knapper der skal bruges på SKUMs nye community.