Good/bad news:
I figured out what the problem is: Session 0 isolation. In Windows 2008/Vista/7, all services and IIS processes run in 'session 0' which has isolation from hardware devices, etc.
You can read about it here:
http://msdn.microsoft.com/en-us/library/ff485857(v=vs.85).aspx Quote:the main problem with GDI+ for server-scenarios is that it does not support running in Session 0. Since Session 0 only supports non-interactive functionality, functions that directly or indirectly interact with display devices will therefore receive errors.
This means that if your Chart runs inside a Windows Service or IIS, various GDI+ functions may fail, including saving to file. I tested it in a Windows Service and this is what happens.
This scenario is a huge problem, because people like me want to be able to create pictures from server-side components using your Chart component.
--------------------------
Interesting news:
I found another workaround that first copies the bitmap byte array into a local Picture object (that is not linked to any GDI object/device), and then saves this picture object as a PNG using GDI+.
There may be a better/faster way to do this using Windows API - I don't know.
I wonder whether any other Chart functions don't work when using GDI+...
So, the ball is in your court now - I did everything I can. Please let me know if you find a way to make it work in the Chart. To test it, just run your app as a windows service in win2008.