我有一個ASP.NET MVC項目,我需要動態生成一些PNG圖像。這很容易。我只是創建返回FileSreamResult對象的ActionResult。爲了生成圖像,我使用了System.Drawing中的類,比如Bitmap和Image。在本地機器和生產服務器上一切正常。但是當生產服務器上的IIS由於不活動而關閉我的應用程序池並重新啓動時,圖像生成開始失敗。在asp.net中奇怪的圖像生成錯誤
問題是在試圖圖像保存到流的代碼:
var imageStream = new MemoryStream();
bmp.Save(imageStream, ImageFormat.Png);
例外是:System.Runtime.InteropServices.ExternalException(0X80004005):在GDI +發生一般性錯誤。所以沒有太大的幫助。我嘗試了不同的解決方案,沒有任何幫助之後,我發現這個話題Alternatives to System.Drawing for use with ASP.NET?
這一主題的主要思想是:System.Drawing命名空間內
類不支持Windows或ASP.NET服務中使用。試圖從這些應用程序類型中使用這些類可能會產生意想不到的問題,例如服務性能下降和運行時異常。
所以我決定使用WPF類來生成圖像。我重寫了所有圖像生成代碼,但現在我在應用程序池重新啓動後出現另一個錯誤。異常: System.Runtime.InteropServices.COMException(0x88982F8A):來自HRESULT的異常:0x88982F8A。當我嘗試將PngBitmapEncoder保存爲流時,會發生這種情況
var stream = new MemoryStream();
encoder.Save(stream);
也許任何人遇到此問題或者只是有什麼想法?