Finally got the code I’ve been working on for the last few weeks all hooked up together so that I have some ASP.NET pages calling into my class libraries, which are written in a mixture of C#, VB.NET, and managed C++. This works great, and the code separation compared to straight ASP makes maintenance much easier.
One thing I did find out, that didn’t appear to be documented on MSDN, was that when you call the Image.Save method, some ImageFormat’s need the output stream to be able to seek and others don’t. For example, the ImageFormat.JPEG version seemed quite happy to write directly to the ASP.NET Response.OutputStream. For PNG, however, I had to write to a MemoryStream and then copy the contents to the Response.OutputStream afterwards. The error message wasn’t particularly helpful, giving an interop exception with GDI+. Oh well, problem solved now.